НОУ ІНТУІТ, Лекція, AutoPostBack
ValidationSummary
Клас ValidationSummary дозволяє вивести підсумкову інформацію щодо всіх валідаторів на сторінці. Вона може бути виведена у різній формі:
- BulletList - список зі значками;
- List - звичайний список;
- SingleParagraph - простий параграф.
Інформацію можна виводити на сторінці, а можна в інформаційному вікні, якщо поставити ShowMessage в True . Для всіх валідаторів виводиться властивість Error Message, а не текст. Text виводиться в самому валідаторе.
Повернімося до сторінки Registration.aspx. Додамо до нього ще одне поле для введення пароля:
Властивість CausesValidation працює, коли елемент керування втрачає фокус. У такому разі пов'язаний з ним валідатор показує значення своєї властивості Text.
Нам потрібно, щоб ім'я обов'язково було введено, а пароль збігався в обох текстових полях.
Перетягніть RequiredFieldValidator і киньте його на форму. ControlToValidate встановіть у txtName . Другий валідатор - Required FieldValidator для пароля. Третій - CompareValidator, який порівнює значення паролів:
А також один ValidationSummary :
Поставимо кнопку, при натисканні на яку відбуватиметься перевірка:
Обробник натискання на кнопку підтверджує введення, якщо валідація пройшла успішно:
Вся перевірка цієї сторінки відбувається у клієнта. Можете навіть зупинити сервер, щоб у цьому переконатися. Тільки коли всі дані введені правильно, відбувається надсилання форми на сервер.
CustomValidator
Якщо потрібно зробити таку перевірку, яку не вдається здійснити за допомогою стандартних валідаторів, в гру входить Custom Validator. У класі CustomValidator можна написати будь-якуфункцію, яка перевірятиме значення як на стороні сервера, так і у клієнта. Класичний приклад - перевірка числа на парність.
Напишемо валідатор користувача, який перевірятиме пароль на довжину — не менше 5 символів:
Відомо, що якщо функція, пов'язана з onclick, поверне логічне значення false, форма не буде відправлена на сервер:
Проведемо таку ж валідацію на сервері. Щоб запустити перевірку на сервері, використовується властивість OnServerValidate. Функція, яка вказана в ній, входить до класу сторінки і має бути написана на C#:
ServerValidate викликається після події Page_Load , тому не можна, як у "Серверні елементи керування" , виводити результати в Page_Load .
Можна одночасно проводити і клієнтську, і серверну валідацію:
Щоб вимкнути можливість генерації клієнтського коду для всіх валідаторів, можна написати
Для відображення повідомлення про помилку можна використовувати звуки та зображення. Для цього у властивості ErrorMessage потрібно записати не текст, а відповідні теги HTML, наприклад
Групи валідації
Іноді потрібно мати на сторінці кілька кнопок, і при натисканні на кожну вводиться інформація з логічно взаємопов'язаних груп елементів управління. Тому мають перевірятися значення лише з цієї групи. У всіх валідаторів та елементів управління, через які можливе введення інформації, є властивість ValidationGroup. Функцію Page.Validate() також можна використовувати з таким параметром. Якщо відбувається натискання на кнопку зі встановленим ValidationGroup , запускається перевірка тих валідаторів , у яких ця властивість така сама.
Висновок
Призначення форм у тому, щоб отримувати дані від користувачів, але дані не мають сенсу, якщо вонивведені неправильно. Елементи-валідатори дозволяють автоматизувати рутинні дії щодо перевірки даних та гарантувати введення даних, що відповідають нашим вимогам.