Как узнать, прошла ли моя форма проверку из моего представления?

В настоящее время я устанавливаю ViewBag.HasError в своем контроллере, а затем использую эту переменную в своем представлении, чтобы определить, следует ли выводить html, предоставляющий сообщение проверки, на экран.

start.cshtml:

@if (ViewBag.HasError != null && ViewBag.HasError)
{
  <tr>
    <td colspan="2">
      @Html.ValidationMessageFor(m => m.Email)<br />                
    </td>
  </tr>
}

есть ли что-то подобное в рамках уже?


person Ninjanoel    schedule 11.07.2013    source источник
comment
Сообщение проверки будет пустым, если ошибок нет.   -  person Maarten    schedule 11.07.2013
comment
@Maarten, «проверочное сообщение» может быть пустым, но я все равно буду каждый раз выводить на экран «корпус» html, чего я не хочу делать.   -  person Ninjanoel    schedule 11.07.2013
comment
возможный дубликат Как я могу проверить ModelState.IsValid изнутри моего представления Razor   -  person Anton    schedule 11.07.2013
comment
@Anton, если бы я знал достаточно, чтобы спросить «как проверить ModelState.IsValid», то я бы не задавал этот вопрос ... кроме того, какое у тебя имя пользователя @Anton? (видите, что я там сделал?) В любом случае, ответ мне очень помог.   -  person Ninjanoel    schedule 11.07.2013
comment
@Nnoel Мой комментарий должен был помочь вам, указав на аналогичный вопрос, на который уже был дан ответ. Извините, если мое намерение было неясным.   -  person Anton    schedule 11.07.2013
comment
@ Антон, извинений не нужно, я просто «защищал» свой вопрос от удаления, так как думал, что что-то вроде этого будет процедура для дубликатов. в любом случае, может быть дубликатом, но ответ Андрея лучше, чем два ответа в дублированном вопросе. ржу не могу.   -  person Ninjanoel    schedule 11.07.2013


Ответы (1)


Никаких флагов для этого не нужно, во фреймворке все уже есть. Когда дело доходит до выполнения ValidationMessageFor, проверяется ModelState на наличие этого конкретного сообщения. Если сообщение найдено (что означает, что проверка была выполнена), оно отображается, в противном случае этот метод ничего не добавляет к выводу.

Однако есть некоторые встроенные функции, которые позволяют вам проверять состояние модели на виде. Вот как проверить, действительна ли модель в целом (аналогично тому, что вы реализовали):

@ViewData.ModelState.IsValid

А вот как проверить ошибки для конкретного поля:

@ViewData.ModelState["Email"].Errors.Count != 0
person Andrei    schedule 11.07.2013