Как делает проверку в ASP.NET MVC 2, на самом деле работают?

Мне нравится iptraf , но, вероятно, необходимо установить его, и это кажется тому, чтобы не быть сохраняемым активно больше.

9
задан Simon_Weaver 17 October 2009 в 03:42
поделиться

2 ответа

Для того, чтобы поле было проверено на стороне клиента, вы должны указать вызов в Html.ValidationMessage / Html.ValidationMessageFor <> для поля (точно так же, как это сделал Дэвид в учебнике, который вы связали) в представлении. По сути, это триггер для логики проверки на стороне клиента, которую вы хотите запустить для этого поля.

Если есть ситуации, когда вы действительно не хотите, чтобы сообщение проверки визуально отображалось для каждого поля (например, с помощью Html .ValidationMessage), но предпочел бы позволить сводке быть единственным источником сообщений об ошибках проверки (т.е. е. используя Html.ValidationSummary), вам по-прежнему нужен какой-то способ «инициировать» проверку, которая будет выполняться для определенных полей, которые вы хотите. Это может быть достигнуто с помощью методов Html.Validate / Html.ValidateFor <> в вашем представлении. Эти помощники ничего не будут отображать, а просто зарегистрируют указанное поле для проверки на стороне клиента.

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

3
ответ дан 4 December 2019 в 15:22
поделиться

Вот что я узнал:

САМОЕ ВАЖНОЕ

  • Ваша HTML-форма должна быть создана с помощью директивы using, а не только BeginForm и EndForm.
  • Вы должны установить Html.ClientValidationEnabled = true ДО того, как вы запустите свою 'Форму'
  • Вы должны использовать Html.ValidationMessage для каждого поля
  • Вы должны установить Html.ClientValidationEnabled = true для каждого частичного элемента управления (ascx )

КАК ЭТО РАБОТАЕТ (очень простой обзор)

  • Когда вы выполняете Html.BeginForm, он создает 'FormContext' во ViewContext
  • Когда используются помощники ValidationMessage, метаданные помещаются в контекст формы
  • Когда форма удаляется (с помощью оператора using), она записывает весь код проверки

MISC

  • Кажется, я не могу заставить работать проверку, когда у меня есть частичный контроль, если этот элемент управления использует модель, отличную от модели представления, которое определяет форму.

  • Вам НЕ нужно использовать Html.TextBoxFor или Html.ValidationMessage, иначе вы можете использовать Html.TextBox и Html.ValidationMessage

10
ответ дан 4 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

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