小编典典

ASP.NET MVC Html.ValidationSummary(true) 不显示模型错误

all

我对 Html.ValidationSummary 有一些问题。我不想在 ValidationSummary 中显示属性错误。当我设置
Html.ValidationSummary(true) 时,它不会显示来自 ModelState 的错误消息。当控制器对字符串的操作出现异常时

MembersManager.RegisterMember(member);

catch 部分向 ModelState 添加了一个错误:

ModelState.AddModelError("error", ex.Message);

但 ValidationSummary 不显示此错误消息。当我设置 Html.ValidationSummary(false)
时,所有消息都会显示,但我不想显示属性错误。我该如何解决这个问题?

这是我正在使用的代码:

模型:

public class Member
{
        [Required(ErrorMessage = "*")]
        [DisplayName("Login:")]
        public string Login { get; set; }

        [Required(ErrorMessage = "*")]
        [DataType(DataType.Password)]
        [DisplayName("Password:")]
        public string Password { get; set; }

        [Required(ErrorMessage = "*")]
        [DataType(DataType.Password)]
        [DisplayName("Confirm Password:")]
        public string ConfirmPassword { get; set; }
}

控制器:

[HttpPost]
public ActionResult Register(Member member)
{
    try
    {
        if (!ModelState.IsValid)
            return View();

        MembersManager.RegisterMember(member);
    }
    catch (Exception ex)
    {
        ModelState.AddModelError("error", ex.Message);

        return View(member);
    }
}

看法:

<% using (Html.BeginForm("Register", "Members", FormMethod.Post, 
                        new { enctype = "multipart/form-data" })) {%> 
    <p>
        <%= Html.LabelFor(model => model.Login)%>
        <%= Html.TextBoxFor(model => model.Login)%>
        <%= Html.ValidationMessageFor(model => model.Login)%>
    </p>

    <p>
        <%= Html.LabelFor(model => model.Password)%>
        <%= Html.PasswordFor(model => model.Password)%>
        <%= Html.ValidationMessageFor(model => model.Password)%>
    </p>

    <p>
        <%= Html.LabelFor(model => model.ConfirmPassword)%>
        <%= Html.PasswordFor(model => model.ConfirmPassword)%>
        <%= Html.ValidationMessageFor(model => model.ConfirmPassword)%>
    </p>

    <div>
        <input type="submit" value="Create" />
    </div>

    <%= Html.ValidationSummary(true)%>
<% } %>

阅读 100

收藏
2022-07-08

共1个答案

小编典典

我相信 ValidationSummary 标志的工作方式是它只会显示
ModelErrorsstring.empty作为键。否则假定它是一个属性错误。您添加的自定义错误具有键“错误”,因此当您调用
ValidationSummary(true) 时它不会显示。您需要使用空键添加自定义错误消息,如下所示:

ModelState.AddModelError(string.Empty, ex.Message);
2022-07-08