Как получить коллекцию ошибок состояния модели в ASP.NET MVC?

Как получить коллекцию ошибок в представлении?

Я не хочу использовать сводную проверку или сообщение проверки Html. Вместо этого я хочу проверить наличие ошибок и, если они есть, отобразить их в определенном формате. Также на элементах управления вводом я хочу проверить наличие ошибки определенного свойства и добавить класс для ввода.

П.С. Я использую 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, если это свойство имеет ошибку.

144
задан 15.04.2020, 18:10

1 ответ

<% ViewData.ModelState.IsValid %>

или

<% ViewData.ModelState.Values.Any(x => x.Errors.Count >= 1) %>

и для определенного свойства...

<% ViewData.ModelState["Property"].Errors %> // Note this returns a collection
209
ответ дан 15.04.2020, 18:10
  • 1
    Вопрос - Как я получаю ошибку для определенного свойства? – Ryan Montgomery 15.04.2020, 18:11
  • 2
    свойство ModelState имеет тип словаря для получения ошибки для передачи ключевое имя ViewData. ModelState [" Name"] –  15.04.2020, 18:11
  • 3
    относительно " ViewData. ModelState [" Property"].Errors" был бы это выдавать исключение нулевой ссылки, если не было никакого ключа с именем " Property"? было бы лучше сначала проверить на пустой указатель на ViewData. ModelState [" Property"] до чтения по Ошибкам? – David Hollowell - MSFT 15.04.2020, 18:11
  • 4
    @DaveH Да, необходимо полностью проверить на существование сначала – Alex Lyman 15.04.2020, 18:12
  • 5
    Ahh, что относительно этого? #define iPhone568ImageNamed (изображение) (isPhone568? [NSString stringWithFormat: @" %-568-й. % @" [отображают stringByDeletingPathExtension], [отображают pathExtension]]: изображение) – Joe D'Andrea 12.05.2020, 23:23

Теги

Похожие вопросы