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

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

最佳答案

使用 @Html.ValidationSummary(excludePropertyErrors: true)

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

它不会检测是否通过@Html.ValidationMessageFor()打印这些内容,因此,如果您忘记了其中任何一个内容,则可能会收到失败的表单提交信息,但不会告诉您它们为什么失败。

要手动添加非属性验证错误,请按照Add error message to @Html.ValidationSummaryASP.NET MVC Html.ValidationSummary(true) does not display model errors中的说明调用ModelState.AddModelError("", "Custom error")(注意为空字符串)。

10-06 04:45