【问题标题】:Add ModelStateError without ViewModelClass.ModelClass annotation添加不带 ViewModelClass.ModelClass 注释的 ModelStateError
【发布时间】:2012-10-12 14:04:43
【问题描述】:

我为我的模型创建了一个特殊的 viewmodel 类,用于将要计算的数据添加到模型中,例如一些 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") 来显示错误?

【问题讨论】:

  • 对不起,你的问题一点都不清楚。你能澄清一下吗?

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


【解决方案1】:

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

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

那么其对应的ModelState 键是Session.Name,如果您想将其关联为错误消息,则应使用该键。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多