НОУ ІНТУІТ, Лекція, 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 , запускається перевірка тих валідаторів , у яких ця властивість така сама.

Висновок

Призначення форм у тому, щоб отримувати дані від користувачів, але дані не мають сенсу, якщо вонивведені неправильно. Елементи-валідатори дозволяють автоматизувати рутинні дії щодо перевірки даних та гарантувати введення даних, що відповідають нашим вимогам.