我在理解如何最好地实现不显眼的客户端验证时遇到问题,该验证与在控制器中添加的错误一起使用ModelState.AddModelError()
。MVC3中的验证摘要,结合了预定义的和ModelState的错误
所以,这是当前的代码:
@Html.ValidationSummary(true)
@Html.ValidationMessageFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.LastName)
会正确显示错误消息,如果我离开了名字。如果我输入名字并标签出来,消息将消失 - 因为它应该工作。
当没有客户端错误存在,我可以提交此表单,我必须检查数据库,用户不存在。如果是这样,我加入一个错误有:
ModelState.AddModelError("", "User already exists")
当返回模型,显示一个错误框,但没有消息在那里。
如果我将(编辑:Jan的评论解决了这部分)@Html.ValidationSummary(true)
更改为@Html.ValidationSummary(false)
,我将看到模型正确返回的错误消息。
现在的问题是,所有的客户端验证将被复制并显示在两个不同的地方。
此外,我想错误显示在相同的地方/ div。就目前而言,这将是两个不同的验证摘要。
任何方法?
这应该工作(空字符串作为AddModelError和ValSum(true)的关键参数)。你确定你传递一个空字符串作为关键参数吗? – Jan 2012-01-11 13:40:23
谢谢!将它设置为空之后我没有编译过。现在它正确显示错误信息。我仍然有问题,现在有两个错误框:一个用于模型状态错误的摘要,然后一个用于预定义的客户端错误:@ Html.ValidationMessageFor() – Andreas 2012-01-11 13:53:44