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)%>
<% } %>
ModelState.AddModelError(string.Empty, ex);
Scheint auch nicht zu funktionieren. Sie müssen dieModelState.AddModelError(string, string)
Überlastung wie oben gezeigt verwenden.Dies funktioniert besser, da Sie validationMessage für einen angegebenen Schlüssel anzeigen können:
und zeige es so an:
quelle
Ich weiß, dass dies etwas alt ist und als Antwort mit 147 Stimmen markiert wurde, aber es gibt noch etwas zu beachten.
Sie können alle Modellfehler, den Namen der Eigenschaft und die Zeichenfolge. Leere Schlüssel werden bei Bedarf in der ValidationSummary angezeigt. Die ValidationSummary enthält eine Überlastung, die dies bewirkt.
quelle
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
zu@Html.ValidationSummary(false, "", new { @class = "text-danger" })
Vielleicht so:
Und im Display hinzufügen:
ODER
quelle
Die Verwendung dieser Zeile kann hilfreich sein
quelle
In meinem Fall hat es wegen der Rückkehr nicht funktioniert.
Anstatt zu verwenden:
Ich benutzte:
Es ist ein Modell, also ist es offensichtlich, dass
ModelState.AddModelError("keyName","Message");
mit einem Modell gearbeitet werden muss.Diese Antwort zeigt warum. Hinzufügen einer Validierung mit DataAnnotations
quelle
Wenn fast alles richtig erscheint, müssen Sie auch darauf achten, dass die Validierungszusammenfassung nicht explizit über eine CSS- Überschreibung wie diese ausgeblendet wird :
Dies kann auch dazu führen, dass das
@Html.ValidationSummary
Symbol ausgeblendet erscheint, da die Zusammenfassung mit dervalidation-summary-valid
Klasse dynamisch gerendert wird .quelle
Du kannst es versuchen,
quelle
Fügen Sie es im untersten Teil Ihrer Ansicht hinzu:
quelle