Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
CustomValidator
Если нужно сделать такую проверку, которую не получается осуществить с помощью стандартных валидаторов, в игру вступает Custom Validator. В классе CustomValidator можно написать любую функцию, которая будет проверять значения как на стороне сервера, так и у клиента. Классический пример — проверка числа на четность. Напишем пользовательский валидатор, который будет проверять пароль на длину — не меньше 5 символов: < head> < title> Регистрация нового пользователя< /title> < script language=" JavaScript" > function validatePassword(oSrc, args){ args.IsValid = (args.Value.length > 5); }< /script> < /head> < asp: CustomValidator ID=" CustomValidator1" runat=" server" ControlToValidate=" txtPassword1" ErrorMessage=" Слишком короткий пароль" Display=" Static" ClientValidationFunction=" validatePassword" > *< /asp: CustomValidator>Проверка происходит на стороне клиента функцией на JavaScript validatePassword. Для этого надо в свойстве ClientValidationFunction записать имя функции. В сгенерированном коде к кнопке привязан такой код: < input type=" submit" name=" Button1" value=" Button" onclick=" javascript: WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(" Button1", " true", " false", " false"))" id=" Button1" />Известно, что если функция, связанная с onclick, вернет логическое значение false, форма не будет отправлена на сервер: < asp: CustomValidator ID=" CustomValidator1" runat=" server" ControlToValidate=" txtPassword1" ErrorMessage=" Слишком короткий пароль" Display=" Static" OnServerValidate=" ServerValidate" > *< /asp: CustomValidator> < br />Произведем такую же валидацию на сервере. Чтобы запустить проверку на сервере, используется свойство OnServerValidate. Функция, которая указана в ней, входит в класс страницы и должна быть написана на C#: ServerValidate вызывается после события Page_Load, поэтому нельзя выводить результаты в Page_Load. Можно также одновременно проводить и клиентскую, и серверную валидацию: < asp: CustomValidator ID=" CustomValidator1" runat=" server" ControlToValidate=" txtPassword1" ErrorMessage=" Слишком короткий пароль" Display=" Static" OnServerValidate=" ServerValidate" ClientValidationFunction=" validatePassword" > *< /asp: CustomValidator>Чтобы отключить возможность генерации клиентского кода для всех валидаторов, можно написать void Page_Load() { foreach (BaseValidator bv in Page.Validators) { bv.EnableClientScript = false; } }Для отображения сообщения об ошибке можно использовать звуки и картинки. Для этого в свойство ErrorMessage нужно записать не текст, а соответствующие теги HTML, например ErrorMessage=’< img src=" error.gif" > ’
|