Wie man die Anzeige nur eine Fehlermeldung mit Html.ValidationSummary?
Ich habe eine view (überspringen redundanten code für Einfachheit):
@model CompetencyModel
@using (Html.BeginForm())
{
@Html.ValidationSummary()
@Html.EditorFor(model => model.Results)
}
Wenn ich behaupte, dass, wenn die Validierung fehlschlägt innen EditorFor
, ValidationSummary zeigt die Liste der alle Prüfmeldungen für jedes Element aus EditorFor
.
Diesem screenshot ist die Ansicht, wo EditorFor
ist eine einzelne Zeile mit den radio-buttons:
Aber ich brauche eine einzige Fehlermeldung nur sagen, dass etwas fehlgeschlagen ist. Ich habe versucht:
@Html.ValidationSummary(true)
@Html.EditorFor(model => model.Results)
Aber es muss nicht alles zeigen. Ich habe versucht,
@Html.ValidationSummary(true)
@Html.EditorFor(model => model.Results)
@Html.ValidationMessageFor(model => model.Results, "ERROR !!!")
Aber es muss nicht alles zeigen.
Was mache ich falsch? Danke.
Lösung
Dies wird den trick tun.
<style>.validation-summary-errors ul { display: none; }</style>
@Html.ValidationSummary("Can't save, you must answer all questions !!")
- sollte funktionieren. Ist Ihr Formular in einer Schleife, durch Zufall?
- NÖ. Wenn es zeigt eine Liste der Gültigkeitsprüfung Nachrichten, es sollte eine Allgemeine Fehlermeldung für "EditorFor", wenn ich den pass (true), aber es funktioniert nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den ValidationExtensions.ValidationSummary-Methode immer wieder eine un-geordnete Liste von Elementen.
Andere person diese Frage stellen und entscheiden, Sie zu nutzen JQuery zum ausblenden der Elemente:
https://stackoverflow.com/a/10837702/1220302
Einer anderen Lösung, die Sie tun können, ist nur die Anzeige das erste Element in der Liste mit CSS nth-child pseudo-tag. Dies ist natürlich abhängig von der browser-version Sie verwenden, obwohl:
Ich denke, so etwas wie dieses:
Ich denke, Sie können verwenden Sie die folgende Regel, um zu verbergen, alle Nachrichten, außer der ersten: