我创建了一个实现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
谢谢, 托马斯
答案 0 :(得分:0)
“日期”是您要验证的财产的名称吗?
ModelState.AddModelError的第一个参数应该是您希望验证消息显示的属性的名称,或者保留为string.Empty,如果您只希望在验证摘要中显示错误。
如果要显示与视图模型的特定属性无关的错误消息,可以调用<%:Html.ValidationMessage(“Date”)%>在您的视图中显示该特定消息(如果已设置)。
编辑:刚刚意识到这个问题有多久了。好吧,无论如何都可能派上用场......