ASP.NET HTML MVC. (Верный) ValidationSummary не отображает образцовые ошибки

У меня есть некоторая проблема с HTML. ValidationSummary. Я не хочу отображать ошибки свойства в ValidationSummary. И когда я установил HTML. ValidationSummary (верный), это не отображает сообщения об ошибках от ModelState. Когда существует некоторое Исключение в действии контроллера со строкой

MembersManager.RegisterMember(member);

раздел выгоды добавляет ошибку к ModelState:

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

Но ValidationSummary не отображает это сообщение об ошибке. Когда я установил HTML. ValidationSummary (ложь), которую отображают все сообщения, но я не хочу отображать ошибки свойства. Как я могу решить эту проблему?

Вот код, который я использую:

Модель:

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)%>
<% } %>
187
задан Daniel 29 February 2016 в 09:33
поделиться

1 ответ

Я считаю, что флаг ValidationSummary работает так, что он будет отображать в качестве ключа только ModelErrors для string.empty. В противном случае предполагается, что это ошибка свойства. Пользовательская ошибка, которую вы добавляете, имеет ключ 'error', поэтому она не будет отображаться при вызове ValidationSummary(true). Вам нужно добавить пользовательское сообщение об ошибке с пустым ключом, как это:

ModelState.AddModelError(string.Empty, ex.Message);
318
ответ дан 23 November 2019 в 05:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: