Пользовательский элемент управления TextBox со встроенной проверкой на стороне клиента - PullRequest
0 голосов
/ 30 января 2011

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 30 января 2011

Ну, вы правы, вы всегда можете реализовать свой собственный серверный элемент управления, который наследуется от TextBox и автоматически связывает пару валидаторов.Но обычно вы не будете создавать пользовательские элементы управления, если они явно не нужны, а затем через несколько разных проектов.Для проведения проверки на стороне клиента вам обычно требуется 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 на внешнем интерфейсе.

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