调用modelState.AddModelStateError时,ValidationMessageFor不返回任何信息

时间:2010-10-21 12:35:49

标签: asp.net-mvc-2

我创建了一个实现IModelBinder接口的类。在该类的方法中,我基本上检索了一些值并尝试验证它们。如果验证失败,我将使用如下所示的必要信息更新模型状态:

        DateTime mydate;
        if (!DateTime.TryParse(convValue,out mydate))
        {
            bindingContext.ModelState.AddModelError("Date", "Date was crap");
        }

问题是Html.ValidationMessageFor(m => m.Model)没有返回任何值。我查看了MVC源代码,发现在ModelState字典中找不到ID为“Date”的正确密钥。

为什么?返回视图的控制器可以访问模型状态,并可以枚举ModelState.Errors

谢谢, 托马斯

1 个答案:

答案 0 :(得分:0)

“日期”是您要验证的财产的名称吗?

ModelState.AddModelError的第一个参数应该是您希望验证消息显示的属性的名称,或者保留为string.Empty,如果您只希望在验证摘要中显示错误。

如果要显示与视图模型的特定属性无关的错误消息,可以调用<%:Html.ValidationMessage(“Date”)%>在您的视图中显示该特定消息(如果已设置)。

编辑:刚刚意识到这个问题有多久了。好吧,无论如何都可能派上用场......