У меня есть некоторая проблема с 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)%>
<% } %>
Я считаю, что флаг ValidationSummary работает так, что он будет отображать в качестве ключа только ModelErrors для string.empty
. В противном случае предполагается, что это ошибка свойства. Пользовательская ошибка, которую вы добавляете, имеет ключ 'error', поэтому она не будет отображаться при вызове ValidationSummary(true). Вам нужно добавить пользовательское сообщение об ошибке с пустым ключом, как это:
ModelState.AddModelError(string.Empty, ex.Message);