Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПвИ / Конспект лекций.doc
Скачиваний:
267
Добавлен:
01.06.2015
Размер:
1.05 Mб
Скачать

RegularExpression Validator

Наиболее гибкий среди проверяющих элементов управления, который проверяет введенное значение на соответствие формату, заданному регулярным выражением. RegularExpressionValidator можно применять для различных часто встречающихся операций проверки ввода, начиная с требования к введенной строке содержать только цифры и кончая проверкой форматов адресов электрон­ной почты, почтовых индексов и номеров кредитных карт.

Рассмотрим пример использования RegularExpressionValidator для того, чтобы отсечь строки, содержащие что-либо, кроме цифр:

<asp:TextBox ID="Quantity" RunAt="server" />

<asp:RegularExpressionValidator

ControlToValidate="Quantity"

ValidationExpression="^\d+$"

ErrorMessage="Digits only"

Display="static"

RunAt="server" />

В регулярном выражении \d представляет цифры 0-9, а + означает «один или боль­ше». Выражение \d+ означает «один или несколько символов, являющихся циф­рами».

Другой пример проверяется адрес электронной почты:

<asp:TextBox ID="EMail" RunAt="server" />

<asp:RegularExpressionValidator

ControlToValidate="EMail"

ValidationExpression="^[\w\.-]+@[\w-]+\.[\w\.-]+$"

ErrorMessage="Invalid e-mail address"

Display="static"

RunAt="server" />

Символ ^ означает «начинается с начала строки». Это важно, так как в противном случае любая строка, содержащая подстроку, удовлетворяющую регулярному выражению, также считалась бы пра­вильной (например, «!@#$%А&*name@domain.com»). Аналогичное назначение у сим­вола $ для конца строки: он отсекает строки типа «name@domain.com !@#$%Л&'». [\w\.-]+ означает «один или несколько следующих символов: буквы, цифры, под­черкивания, точки и дефисы», @ — что за ними должен следовать символ «@». [\w-]+ указывает, что за «@» должна следовать одна или несколько букв, чисел, подчер­киваний или дефисов, а \.. - что за всем этим должна идти точка. [\w\.-]+ утверждает, что строка должна заканчиваться одной или несколькими буква­ми, цифрами, подчеркиваниями или дефисами.

CustomValidator

Если ни один из стандартных проверяющих элементов управления не подходит, используется CustomValidator, который проверяет введенные данные по алгоритму, заданному пользователем. Для проверки на клиентской сто­роне надо написать функцию проверки на JavaScript и задать ее с помощью ат­рибута ClientValidationFunction. Проверка на сервере, осуществляет метод проверки, заданный через атрибут OnServerValidate. В следующем примере CustomValidator проверяет, что введенное значение кратно 10:

<asp:TextBox ID="Amount" RunAt="server" />

<asp:CustomValidator

ControlToValidate="Amount"

ClientValidationFunction="validateAmount"

OnServerValidate="ValidateAmount"

ErrorMessage="Amount must be a multiple of 10"

Display="static"

RunAt="server" />

<script language="JavaScript">

<!-

function validateAmount (source, args)

{

args.IsValid = (args.Value % 10 == 0);

}

->

</script>

<script language="C#" runat="server">

void ValidateAmount (Object sender, ServerValidateEventArgs e)

try {

e.IsValid = (Convert.Tolnt32 (e.Value) % 10 == 0);

}

catch (FormatException) {

// Если введено нечисловое значение.

e.IsValid = false;

}

}

</script>

Соседние файлы в папке ПвИ