Как получить коллекцию ошибок в представлении?
Я не хочу использовать Html Helper Validation Summary или Validation Message. Вместо этого я хочу проверить наличие ошибок и, если они есть, отобразить их в определенном формате. Также на элементах управления вводом я хочу проверить наличие ошибки определенного свойства и добавить класс для ввода.
PS Я использую Spark View Engine, но идея должна быть такой же.
Поэтому я решил, что могу сделать что-то вроде ...
<if condition="${ModelState.Errors.Count > 0}">
DispalyErrorSummary()
</if>
....and also...
<input type="text" value="${Model.Name}"
class="?{ModelState.Errors["Name"] != string.empty} error" />
....
Или что-то вроде того.
ОБНОВИТЬ
Мое окончательное решение выглядело так:
<input type="text" value="${ViewData.Model.Name}"
class="text error?{!ViewData.ModelState.IsValid &&
ViewData.ModelState["Name"].Errors.Count() > 0}"
id="Name" name="Name" />
Это только добавляет класс css error, если это свойство имеет ошибку.
html
asp.net-mvc
validation
spark-view-engine
Райан Монтгомери
источник
источник
Ответы:
или
и для конкретной собственности ...
источник
Чтобы просто получить ошибки от ModelState, используйте этот Linq:
источник
Сокращенная версия ответа @ ChrisMcKenzie :
источник
Это даст вам одну строку со всеми ошибками с разделением запятой
источник
Спасибо Чад! Чтобы показать все ошибки, связанные с ключом, вот что я придумал. По какой-то причине базовый помощник Html.ValidationMessage показывает только первую ошибку, связанную с ключом.
HtmlHelper:
источник
Собрав несколько ответов сверху, вот что я в итоге использовал:
validationErrors
заканчивается тем,List<string>
что содержит каждое сообщение об ошибке. Оттуда легко сделать то, что вы хотите с этим списком.источник
Вот это В.Б.
источник
Если вы не знаете, какое свойство вызвало ошибку, вы можете, используя отражение, перебрать все свойства:
Где T - это тип вашей "ViewModel".
источник