RequiredFieldValidator и CustomValidator запускаются одновременно? - PullRequest
3 голосов
/ 07 мая 2011

У меня есть файл asp.net с:

  • 3 радиоблока, один должен быть выбран
  • список, в котором должен быть выбран элемент
  • код проверки

Теперь у меня есть 4 валидатора:

  • CustomValidator для радиобоксов
  • CustomValidator для списка
  • CustomValidator для проверки капчи (которая сохраняется в сеансе)
  • RequiredFieldValidator, чтобы текстовое поле captcha не было пустым.

Моя проблема в заказе. Если пользователь пытается отправить формуляр и все 4 валидатора ошибочны, будет показан только RequiredFieldValidator, потому что остальные 3 находятся на стороне сервера. Пользователь теперь думает «О, только одна ошибка» и исправил ее. И после этого происходит еще 3 ошибки, и пользователь может быть немного рассержен на это: «Почему система не сообщает мне в первой игре?!»

Итак, как там удобное для пользователя решение?

Есть ли способ запустить проверку на стороне сервера в то же время, если проверка на стороне клиента завершится неудачно? Или есть способ запустить проверку на стороне клиента на стороне сервера?

(Внимание! Я попытался удалить RequiredFieldValidator и вместо этого сделать четвертый CustomValidator. Итак, у меня есть 4 CustomValidator и ни одного Requ-Field-Val. В итоге ни один CustomValidator не будет выполнен после формул это отправить = (я не знаю почему.)

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Одним из способов является отключение проверки на стороне клиента для обязательного валидатора поля с использованием свойства EnableClientScript . Так что все ваши проверки на стороне сервера.

Но лучшим способом (если это возможно) будет использование клиентских проверок для всех из них, т. Е. Использование настраиваемой логики проверки js с настраиваемыми валидаторами с использованием свойства ClientValidationFunction - см. статью для такого примера.

1 голос
/ 14 октября 2011

Добавьте свойство ValidationGroup = "abc" для валидаторов Controls и функции отправки. Используйте метод Page.Validate ("abc") для проверки серверных элементов управления в определенное время.

Примерно так.

Page.Validate("abc")
If Not Page.IsValid Then
    Return False  
End If
...