如果只显示已经显示的字段相关错误,我将不显示ValidationSummary。但是,当发生自定义服务器端验证错误时,我确实需要ValidationSummary:
if (!UserManager.IsEmailConfirmed(user.Id))
{
AuthenticationManager.SignOut();
ModelState.AddModelError("", "You need to confirm your email.");
return View(model);
}
最佳答案
使用 @Html.ValidationSummary(excludePropertyErrors: true)
。
当excludePropertyErrors
为true
时,此重载会隐藏属性错误,例如“电子邮件字段不是有效的电子邮件地址”。和“密码字段为必填”。来自验证摘要。另请参见@Html.ValidationSummary(true) - What's the true do?。
它不会检测是否通过@Html.ValidationMessageFor()
打印这些内容,因此,如果您忘记了其中任何一个内容,则可能会收到失败的表单提交信息,但不会告诉您它们为什么失败。
要手动添加非属性验证错误,请按照Add error message to @Html.ValidationSummary和ASP.NET MVC Html.ValidationSummary(true) does not display model errors中的说明调用ModelState.AddModelError("", "Custom error")
(注意为空字符串)。