0

我为我的模型创建了一个特殊的视图模型类,用于将要计算的数据添加到模型中,比如一些 int 时间

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")

4

1 回答 1

0

恐怕这是不可能的。如果在视图内,您有以下字段:

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

那么它对应的ModelState键是Session.Name,如果你想将它与错误消息相关联,这就是你应该使用的。

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

作为数据注释的替代方法,您可以查看 FluentValidation.Net

于 2012-10-12T16:06:55.640 回答