2011-01-30 5 views
0

У меня есть текстовое поле в моем приложении, которое имеет несколько проверок на нем, например. RequiredFieldValidator, RegexValidation и CustomValidation. На моей странице есть несколько похожих текстовых полей. Поэтому я просто копирую-вставляю и изменяю свойства id и controltovalidate, и он работает.Пользовательский элемент управления TextBox со встроенной проверкой на стороне клиента

Поскольку подобные tbxs будут использоваться и на другой странице, я думаю, было бы неплохо создать собственный пользовательский элемент управления TextBox со встроенной проверкой.

Вот два подхода, которые я нашел и попробовал:

1: Реализовать из IValidator выполнять свою пользовательскую проверку в методе Validate. Как показано здесь: Self-Validating TextBox Но он не показывает, как реализовать проверку на стороне клиента.

2: Создайте настраиваемый элемент управления, который происходит из TextBox и добавьте встроенные валидаторы asp.net, которые мне нужны. Как показано здесь: Custom TextBox. Я пробовал код, и он работает на стороне сервера/клиента.

Мне нравится первый подход, но не знаю, как реализовать проверку на стороне клиента. Я знаю, что мне нужна функция js на стороне клиента. Я могу это сделать. Я знаю, как включить мой js-файл, используя класс page.ClientScript, но не знаю, как интегрировать все вместе и заставить его работать.

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

Я использую Asp.Net 2.0. Спасибо за любые предложения.

ответ

0

Ну, вы правы, вы всегда можете реализовать свой собственный серверный элемент управления, который происходит из TextBox и автоматически связывает пару валидаторов. Но обычно вы не будете создавать настраиваемые элементы управления, насколько это явно не требуется, а затем через несколько разных проектов. Для того, чтобы иметь на стороне клиента validaton, вам, как правило, необходим JavaScript, но обратите внимание, что большинство элементов управления проверки ASP.net уже имеют встроенную проверку на стороне клиента (то есть обязательные поля проверки подлинности, проверки диапазона, ...). Другие (например, пользовательский валидатор) позволяют подключить ваш пользовательский javascript.

Подход, который звучит более разумно для меня, заключается в том, чтобы иметь элементы управления TextBox, как они есть на странице ASP.net/usercontrol, и динамически связывать валидаторы с вашим кодом во время выполнения. Скажите в своем OnInit событии, вы вызываете функцию RegisterRequiredValidators, проходящую в списке TextBoxes. Я просто думаю вслух:

public override void OnInit(...) 
{ 
    ... 
    RegisterRequiredValidators(
     txtFirstname, 
     txtSurname, 
     txtAge 
    } 
    ... 
} 

public void RegisterRequiredValidators(params Control[] textBoxes) 
{ 
    //execute the logic of creating and attaching validators 
} 

Это просто глупый пример, просто чтобы объяснить контекст. Теоретически вы можете разработать эту концепцию для регистрации любых валидаторов. Мы делаем что-то подобное на работе, абстрагируя это в форме «правил», которые в конечном итоге оказываются в качестве валидаторов ASP.net на интерфейсе.

+0

Спасибо Juri. Да, мне известно о проверке на стороне клиента, которая поставляется со встроенными валидаторами, и так работает второй подход, о котором я говорил. Я буду использовать этот элемент управления несколько раз на более чем одной странице и, возможно, в других проектах. Я сомневаюсь, что предложенный вами подход будет соответствовать моим потребностям. Если я не могу сделать первый подход к работе, я думаю, что я пойду со вторым. – gbs

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