Реклама:

Вам не кажется, что это довольно утомительное занятие — писать такой далеко не тривиальный код для каждой формы и многократно его переписывать? Поскольку подобные требования выдвигаются все чаще, корпорация Microsoft позаботилась о своих клиентах — пакет ASP.NET поставляется теперь вместе с набором валидаторов (Validation Controls), которые значительно упрощают эту задачу.

Валидаторы

Валидаторы — это обычные элементы управления, которые реализуют интерфейс IValidator. Этот интерфейс определяет два свойства, IsValid и ErrarMessage, а также метод Validate.

public interface IValidator <

// Методы

void Validate();

// Свойства

string ErrorMessage ) get; set: } bool IsValirj { get: set; )

>

Если валидатор поместить в страницу, он самостоятельно разместится в коллекции элементов управления Validators. Метод Validate содержится также в классе Page, который проходит циклом по коллекции Validators и вызывает метод Validate для каждого элемента управления. Затем выполняется соответствующая логика, после чего согласно требованиям указываются свойства IsValid и ErrorMessage.

Элементы управления для возврата формы, которые присваивают свойству Causes-Validation значение true, перед запуском соответствующего обработчика событий элемента управления вызывают метод Validate страницы. Если все валидаторы сработали успешно (то есть всем свойствам IsValid присвоено значение true), то страница присваивает значение true собственному свойству IsValid. В противном случае ему присваивается значение false. Существуют, однако, некоторые импликации.

Используя валидаторы, всегда нужно проверять свойство страницы IsValid. Выполнение страницы не будет остановлено из-за того, что одна или все проверки не дадут положительного результата. Здесь уже вам решать, как продолжать выполнение. Вы также можете вручную проверить все элементы управления, пройдя циклом по коллекции Validators, и определить, какой валидатор присвоил свойству IsValid значение false. Поскольку каждый валидатор наследуется из BaseValidator, вы сможете просмотреть этот класс и выяснить, какой валидатор не подтверждает корректности данных, прочитав значение свойства ControlToValidate.

foreach (BaseValidator bv in Page.Validators) <

if (bv.IsValid == false) I

// Выполнение некоторого действия string Ctrl = bv.ControlToValidate;

>

}

[~^] ПРИМЕЧАНИЕ Если для включения множества логических форм в странице вы используете свойство ValidationGroup (см. ниже табл. 3-5), то ASP.NET присвоит значение true всем валидаторам, не принадлежащим текущей группе подтверждения. Более того, вы можете использовать метод Page.GelValidators для извлечения валидаторов из специфической группы. Имя группы элементов управления можно считать из элемента, который вызвал возврат формы, например:

protected void _btn2_CliGK(object sender. EventArgs e) {

Button b = sendee as Button; ValidatorCollection veel = Page.GetValidators(D. ValidationGi-oup); foreach (BaseValidator bv in vcol) {

>

}

Следует заметить, что метод Validate вызывается элементом управления только тогда, когда его свойству CausesValidation присвоено значение true. Если попытаться получить доступ к свойству IsValid псрел вызовом метода Validate, возникнет исключительная ситуация HttpException. Обычно это происходит, когда вы пытаетесь проверить свойство IsValid такого события страницы, как Page_Load, которое выполняется перед запуском обработчика события, вызвавшего возврат формы. В этом случае вы должны вручную вызвать сначала метод Validate, а затем проверить значение свойства IsValid.


⇐ Предыдущая страница| |Следующая страница ⇒