我为我的模型创建了一个特殊的viewmodel类,用于将要计算的数据添加到模型中,就像一些int for time
public class SessionView
{
public Session Session { get; set; }
public int StartHour { get; set; }
public int StartMin { get; set; }
public int EndHour { get; set; }
public int EndMin { get; set; }
}
当我使用自定义验证器进行验证时,我将错误添加到ModelState,而视图不需要“.Session”来找回在回发时添加错误的正确位置。
如何通过将其添加为ModelState.AddModelError("Name","error")
而不是ModelState.AddModelError("Session.Name","error")
来显示错误?
答案 0 :(得分:0)
我担心这是不可能的。如果在视图中,您有以下字段:
@Html.EditorFor(x => x.Session.Name)
@Html.ValidationMessageFor(x => x.Session.Name)
然后其对应的ModelState
密钥为Session.Name
,如果您想将其与错误消息相关联,那么您应该使用该密钥。
但是为了避免这些问题,您可以使用Data Annotation或编写自定义验证属性,然后使用这些属性修饰相应的属性。这样您就不必担心密钥了,因为如果您正在使用集合 - Sessions[3].Name
工作,事情可能会变得更加丑陋。
作为数据注释的替代方案,您可以结帐FluentValidation.Net。