MVC3中的验证摘要,结合了预定义和ModelState错误

时间:2012-01-11 13:29:20

标签: asp.net-mvc asp.net-mvc-3 validation razor

我在理解如何最好地实现不显眼的客户端验证时遇到问题,该验证与控制器中添加的ModelState.AddModelError()错误一起使用。

所以,这是当前的代码:

@Html.ValidationSummary(true)
@Html.ValidationMessageFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.LastName)

如果我遗漏了名字,将会正确显示错误消息。如果我输入名字和标签,则消息将消失 - 因为它应该有效。

当没有客户端错误并且我可以提交此表单时,我必须对用户尚不存在的数据库进行检查。如果是,我在添加错误:

ModelState.AddModelError("", "User already exists")

返回模型时,会显示一个错误框,但其中没有消息。

如果我将@Html.ValidationSummary(true)更改为@Html.ValidationSummary(false),我会看到模型正确返回错误消息。 (编辑:Jan的评论解决了这个问题)部分)

现在的问题是,所有客户端验证都将被复制并显示在两个不同的位置。

另外,我希望错误显示在同一个地方/ div中。就像现在一样,它将是两个不同的验证摘要。

有什么方法吗?

1 个答案:

答案 0 :(得分:0)

您在文本框旁边设置的验证可以将@Html.ValidationMessageFor(model => model.LastName)的文字设置为@Html.ValidationMessageFor(model => model.LastName, "")。或者如果你想要添加'*'。然后,您的文本框旁边就没有消息了。