Jak uzyskać zbiór błędów w widoku?
Nie chcę używać podsumowania walidacji pomocnika HTML lub komunikatu walidacji. Zamiast tego chcę sprawdzić błędy i wyświetlić je w określonym formacie. Również w kontrolkach wejściowych chcę sprawdzić określony błąd właściwości i dodać klasę do danych wejściowych.
PS Używam Spark View Engine, ale pomysł powinien być taki sam.
Pomyślałem, że mógłbym zrobić coś takiego ...
<if condition="${ModelState.Errors.Count > 0}">
DispalyErrorSummary()
</if>
....and also...
<input type="text" value="${Model.Name}"
class="?{ModelState.Errors["Name"] != string.empty} error" />
....
Czy jakoś tak.
AKTUALIZACJA
Moje ostateczne rozwiązanie wyglądało następująco:
<input type="text" value="${ViewData.Model.Name}"
class="text error?{!ViewData.ModelState.IsValid &&
ViewData.ModelState["Name"].Errors.Count() > 0}"
id="Name" name="Name" />
Spowoduje to dodanie klasy CSS błędu tylko wtedy, gdy ta właściwość zawiera błąd.
html
asp.net-mvc
validation
spark-view-engine
Ryan Montgomery
źródło
źródło
Odpowiedzi:
lub
i dla konkretnej nieruchomości ...
źródło
Aby po prostu pobrać błędy z ModelState, użyj tego Linq:
źródło
Skrócona wersja odpowiedzi @ ChrisMcKenzie :
źródło
W ten sposób otrzymasz jeden ciąg ze wszystkimi błędami oddzielonymi przecinkami
źródło
Dzięki Chad! Aby pokazać wszystkie błędy związane z kluczem, oto co wymyśliłem. Z jakiegoś powodu podstawowy helper Html.ValidationMessage pokazuje tylko pierwszy błąd związany z kluczem.
HtmlHelper:
źródło
Zestawiając kilka odpowiedzi z góry, oto co ostatecznie użyłem:
validationErrors
kończy się jakoList<string>
zawierająca każdy komunikat o błędzie. Stamtąd łatwo jest robić, co chcesz z tą listą.źródło
Oto VB.
źródło
Jeśli nie wiesz, jaka właściwość spowodowała błąd, możesz za pomocą odbicia zapętlić wszystkie właściwości:
Gdzie T jest typem Twojego „ViewModel”.
źródło