如果错误已经逐字段显示,如何不显示ASP MVC ValidationSummary?

时间:2015-04-24 12:15:18

标签: c# asp.net-mvc

如果只显示已显示的字段相关错误,我不想显示ValidationSummary。但是,当发生自定义服务器端验证错误时,我确实需要ValidationSummary:

if (!UserManager.IsEmailConfirmed(user.Id))
{
    AuthenticationManager.SignOut();
    ModelState.AddModelError("", "You need to confirm your email.");
    return View(model);
}

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:11)

使用@Html.ValidationSummary(excludePropertyErrors: true)

true@Html.ValidationMessageFor()时,此重载会隐藏属性错误,例如“电子邮件字段不是有效的电子邮件地址。”“密码字段是必需的。“来自验证摘要。另请参阅@Html.ValidationSummary(true) - What's the true do?

不会检测您是否通过ModelState.AddModelError("", "Custom error")打印它们,所以如果您忘记了其中任何一个,您可能会收到失败的表单提交,但不会告诉您它们失败的原因。

要手动添加 - 属性验证错误,请按Add error message to @Html.ValidationSummaryASP.NET MVC Html.ValidationSummary(true) does not display model errors中的说明调用Caused by: java.io.NotSerializableException:javax.swing.plaf.basic.BasicTextUI$UpdateHandler at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) at java.io.ObjectOutputStream.access$300(ObjectOutputStream.java:162) at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStream.java:1707) at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:482) at java.awt.Container.writeObject(Container.java:3697) at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) (请注意空字符串)。

答案 1 :(得分:0)

像@CodeCaster一样说简单添加

  

@ Html.ValidationSummary(真)。

如果bool参数为true,则仅显示模型级错误。如果参数为false,则显示所有错误。 reference