ASP.NET: как получить один и тот же элемент управления валидаторами на стороне клиента и на стороне сервера - PullRequest
3 голосов
/ 20 мая 2010

Для элементов управления ASP.NET для проверки я хочу использовать как проверку на стороне клиента для пользовательского опыта, так и проверку на стороне сервера для защиты от хакеров. Документация ASP.NET заставляет меня поверить, что если EnableClientScript = "True", то проверка на стороне сервера не будет выполняться, если проверка на стороне клиента возможна для пользовательского агента. Чтобы получить проверку на стороне сервера, в документации написано использование EnableClientScript = "False", которое полностью обходит проверку на стороне клиента.

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

Если я правильно понимаю документацию ASP.NET, я могу найти только два варианта:

  1. Используйте два одинаковых элемента управления валидатора, за исключением их идентификатора и свойств EnableClientScript. Очевидно, уродливо поддерживать два элемента управления почти одинаковыми.

  2. Напишите некоторый код, чтобы проверить, выполняет ли обратная передача, затем вызовите метод Validate для группы валидаторов. Зачем писать код позади, если есть способ быть автоматическим из управления?

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

Заранее спасибо за ваш вклад.

Ответы [ 4 ]

3 голосов
/ 20 мая 2010

Проверка на стороне сервера будет происходить всегда, так что вам не нужно об этом беспокоиться. Единственный способ обойти это - использовать CustomValidator или создать собственный класс валидатора из BaseValidator , который ничего не делает на стороне сервера.

По умолчанию проверка на стороне сервера происходит после Page_Load () и перед любыми инициированными событиями (например, нажатием кнопки). Однако в вашей Page_Load () вы можете принудительно вызвать Page.Validate (). После проверки вы можете проверить свойство Page.IsValid.

Я рекомендую прочитать Проверка ASP.NET по глубине . Кроме того, это не то, что вы просили, но принципиально важно понимать жизненный цикл страницы и ViewState (если вы не используете MVC). Почти все, с чем вы столкнетесь, использует это.

0 голосов
/ 20 мая 2010

Согласно этому источнику Microsoft , " структура страницы веб-форм всегда выполняет проверку на сервере, даже если проверка уже была выполнена на клиенте ."

Там гораздо больше информации о том, как реализовать средства проверки в ASP.Net 2.0. Предположительно, основное поведение не изменилось в последующих выпусках ASP.Net.

0 голосов
/ 20 мая 2010

используйте валидатор asp в вашей разметке, затем при обратной передаче сделайте следующее:

Page.Validate()
if(Page.isValid)
{
     // Validation passed
}
0 голосов
/ 20 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...