ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Одной приятной особенностью RequiredFieldValidator является то, что этот элемент поддерживает свойство InitialValue. Это свойство используется для того, чтобы гарантировать ввод пользователем любого значения, отличного от начального значения соответствующего поля TextBox. Например, если пользователь обращается к странице впервые, вы можете настроить TextBox на отображение значения "Введите свое имя". Если не установить свойство InitialValue элемента RequiredFieldValidator, среда выполнения будет предполагать, что строка "Введите свое имя" является действительной, Для гарантии того, что данный TextBox пройдет
Элемент RegularExpressionValidator
Элемент RegularExpressionValidator может использоваться тогда, когда требуется сравнение введенных символов с некоторым шаблоном. Так, для гарантии того, что поле данного TextBox содержит действительный номер социальной страховки США (US SSN), можно определить элемент так, как предлагается ниже.
Здесь обратите внимание на то, что RegularExpressionValidator определяет свойство ValidationExpression. Если вы никогда не работали с регулярными выражениями, вам для понимания этого примера нужно знать только то, что регулярные выражения используются для проверки соответствия заданному строковому шаблону. Указанное здесь выражение "\d{3}-\d{2}-\d{4}" соответствует стандартному номеру социальной страховки в США, имеющему вид ххх-хх-хххх (где x означает любую цифру).
Это конкретное регулярное выражение вполне очевидно, но предположим, что нам нужно проверить соответствие действительному телефонному номеру Японии. Выражение, необходимое в данном случае, является более сложным – оно имеет вид "(0\d{1,4}-|\(0\d{1,4}\)?)?\d{1,4}-\d{4}". Поэтому очень хорошо, что при выборе свойства ValidationExpression в окне свойств вы имеете возможность выбрать подходящее значение из встроенного набора часто используемых регулярных выражений (рис. 23.33).
Замечание. Если вам действительно нужны регулярные выражения, то знайте, что платформа .NET для программной работы с регулярными выражениями предлагает два пространства имен (System.Text.RegularExpressions и Systern.Web.RegularExpressions).
Рис. 23.33. Создание регулярного выражения с помощью Visual Studio 2005
Элемент RangeValidator
В дополнение к Свойствам MinimumValue и MaximumValue, элементы RangeValidator имеют свойство Type. Чтобы выполнить проверку ввода пользователя на соответствие заданному диапазону целых чисел, для этого свойства нужно указать Integer (что не является значением по умолчанию!).
Элемент RangeValidator можно использовать и тогда, когда нужно проверить,
Элемент CompareValidator
Наконец, обратим ваше внимание на то, что CompareValidator поддерживает свойство Operator.
Поскольку задачей этого элемента контроля ввода является сравнение значения в текстовом блоке с другим значением при помощи бинарного оператора, не удивительно то, что свойству Operator можно назначить такие значения, как LessThan (меньше), GreaterThan (больше), Equal (равно) и NotEqual (не равно). Также заметьте, что для указания значения, с которым производится сравнение, используется ValueToCompare.
Замечание. С помощью свойства ControlToValidate элемент CompareValidator можно настроить на сравнение со значением из другого элемента управления Web-формы (а не с конкретным "жестко" заданным значением).
Чтобы завершить создание программного кода для страницы, обработайте событие Click для типа Button и проинформируйте пользователя о завершении работы программы контроля.
Теперь откройте созданную страницу с помощью любого браузера. Никаких заметных изменений вы не увидите. Но если вы попытаетесь щелкнуть на кнопке Подача запроса после ввода неподходящих данных, появится ваше сообщение об ошибке. После ввода корректных данных сообщения об ошибке исчезнут, и соответствующий запрос будет отправлен.
Если взглянуть на HTML-код, отображаемый браузером, вы увидите, что элементы контроля ввода генерируют JavaScript-функцию клиента, использующую специальную библиотеку JavaScript-функций (она содержится в файле WebUIValidation.js), которая автоматически загружается на машине пользователя. По завершении проверки ввода данные формы направляются серверу, где среда выполнения ASP.NET снова выполнит те же проверки уже на Web-сервере (для гарантии того, что не произошло никаких искажений при передаче данных).
В связи со всем сказанным, если HTTP-запрос был послан браузером, не поддерживающим JavaScript клиента, весь контроль будет происходить на сервере. Поэтому вы можете программировать элементы контроля ввода без учета возможностей целевого браузера – возвращенная HTML-страница направит задачу контроля ошибок обратно Web-серверу.
Создание отчетов по проверкам
Заключительной из рассматриваемых здесь задач контроля ввода будет использование элемента ValidationSummary. В настоящий момент каждый из ваших элементов контроля отображает сообщение об ошибке в том месте, где это было определено на этапе разработки. Во многих случаях это будет как раз то, что вам требуется. Однако в сложных формах с многочисленными элементами ввода вы не захотите видеть неожиданно всплывающие то тут, то там яркие сообщения. Используя тип ValidationSummary, вы можете заставить все типы контроля ввода отображать сообщения об ошибках в строго отведенном для этого месте на странице.