Ich habe ein Problem mit Html.ValidationSummary. Ich möchte keine Eigenschaftsfehler in ValidationSummary anzeigen. Und wenn ich Html.ValidationSummary (true) setze, werden keine Fehlermeldungen von ModelState angezeigt. Wenn es eine Ausnahme in der Controller-Aktion für die Zeichenfolge gibt
MembersManager.RegisterMember(member);
Der Abschnitt catch fügt dem ModelState einen Fehler hinzu:
ModelState.AddModelError("error", ex.Message);
ValidationSummary zeigt diese Fehlermeldung jedoch nicht an. Wenn ich Html.ValidationSummary (false) festlege, werden alle Nachrichten angezeigt, aber ich möchte keine Eigenschaftsfehler anzeigen. Wie kann ich dieses Problem beheben?
Hier ist der Code, den ich verwende:
Modell:
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; }
}
Regler:
[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);
}
}
Aussicht:
<% 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)%>
<% } %>