Wie erhalte ich die Fehlersammlung in einer Ansicht?
Ich möchte weder die HTML-Helfer-Validierungszusammenfassung noch die Validierungsnachricht verwenden. Stattdessen möchte ich nach Fehlern suchen und diese in einem bestimmten Format anzeigen. Auch bei den Eingabesteuerelementen möchte ich nach einem bestimmten Eigenschaftsfehler suchen und der Eingabe eine Klasse hinzufügen.
PS Ich verwende die Spark View Engine, aber die Idee sollte dieselbe sein.
Also dachte ich mir, ich könnte so etwas wie ...
<if condition="${ModelState.Errors.Count > 0}">
DispalyErrorSummary()
</if>
....and also...
<input type="text" value="${Model.Name}"
class="?{ModelState.Errors["Name"] != string.empty} error" />
....
Oder etwas ähnliches.
AKTUALISIEREN
Meine endgültige Lösung sah folgendermaßen aus:
<input type="text" value="${ViewData.Model.Name}"
class="text error?{!ViewData.ModelState.IsValid &&
ViewData.ModelState["Name"].Errors.Count() > 0}"
id="Name" name="Name" />
Dies fügt die Fehler-CSS-Klasse nur hinzu, wenn diese Eigenschaft einen Fehler aufweist.
html
asp.net-mvc
validation
spark-view-engine
Ryan Montgomery
quelle
quelle
Antworten:
oder
und für eine bestimmte Eigenschaft ...
quelle
Verwenden Sie diese Linq, um nur die Fehler vom ModelState abzurufen:
quelle
Verkürzte Version von @ ChrisMcKenzies Antwort :
quelle
Dies gibt Ihnen eine Zeichenfolge mit allen Fehlern mit Kommatrennung
quelle
Danke Chad! Um alle mit dem Schlüssel verbundenen Fehler anzuzeigen, habe ich mir Folgendes ausgedacht. Aus irgendeinem Grund zeigt der Basis-Html.ValidationMessage-Helfer nur den ersten Fehler an, der dem Schlüssel zugeordnet ist.
HtmlHelper:
quelle
Nachdem ich einige Antworten von oben zusammengestellt habe, habe ich Folgendes verwendet:
validationErrors
endet damit,List<string>
dass jede Fehlermeldung enthalten ist. Von dort aus können Sie mit dieser Liste ganz einfach das tun, was Sie wollen.quelle
Hier ist der VB.
quelle
Wenn Sie nicht wissen, welche Eigenschaft den Fehler verursacht hat, können Sie mithilfe von Reflection alle Eigenschaften durchlaufen:
Wobei T der Typ Ihres "ViewModel" ist.
quelle