2009-11-20 9 views
0

Я создал собственный элемент управления и пользовательский валидатор (расширяющий BaseValidator). В пользовательском контроле я установил ValidationProperty («Значения»). Проблема в том, что валидация не работает, когда отправляется обратная передача, если я не выполняю функцию Page.Validate(). И когда я вызываю page.Validate(), все кадры проверки выполняются, что не является тем, что я ожидал бы при обратной передаче.Создание настраиваемого валидатора ASP.NET

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

ответ

1

Это не так, как валидаторы работают. Если вы не используете параметр ValidationGroup, все валидаторы на вашей странице будут автоматически запускаться. Вы не должны явно ссылаться на страницу. Validate(). Вам нужно обернуть код проверки, как это, однако:

if(Page.IsValid) 
{ 
    //do something here 
} 

В отличии от стороны клиента валидаторов, проверка на стороне серверов не мешает странице разместить назад и обработку событий в обычном режиме.

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

+0

Да, это на самом деле печально. Я просто заметил, что если я создам два поля с двумя валидаторами, и одно из полей будет иметь свойство AutoPostBack равным true, то когда клиентская сторона проверяет первое поле и отображает сообщение об ошибке, я ввожу текст во втором поле, все сообщения об ошибках исчезают :( –

0

Вы пытались использовать группы проверки?

Смежные вопросы