添加没有ViewModelClass.ModelClass批注的ModelStateError

时间:2012-10-12 14:04:44

标签: c# asp.net-mvc validation modelstate

我为我的模型创建了一个特殊的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")来显示错误?

1 个答案:

答案 0 :(得分:0)

我担心这是不可能的。如果在视图中,您有以下字段:

@Html.EditorFor(x => x.Session.Name)
@Html.ValidationMessageFor(x => x.Session.Name)

然后其对应的ModelState密钥为Session.Name,如果您想将其与错误消息相关联,那么您应该使用该密钥。

但是为了避免这些问题,您可以使用Data Annotation或编写自定义验证属性,然后使用这些属性修饰相应的属性。这样您就不必担心密钥了,因为如果您正在使用集合 - Sessions[3].Name工作,事情可能会变得更加丑陋。

作为数据注释的替代方案,您可以结帐FluentValidation.Net