Основы ASP.NET 2.0

       

ValidationSummary


Класс ValidationSummary позволяет вывести итоговую информацию по всем валидаторам на странице. Она может быть выведена в различной форме:

  • BulletList — список со значками;
  • List — обычный список;
  • SingleParagraph — простой параграф.

Информацию можно выводить на странице, а можно в информационном окне, если ShowMessage поставить в True. Для всех валидаторов выводится свойство Error Message, а не текст. Text выводится в самом валидаторе.

Вернемся к странице Registration.aspx. Добавим в него еще одно поле для ввода пароля:

<form runat="server" id="input"> <asp:Label ID="Label1" runat="server" Text="Введите имя:" Width="140px"></asp:Label> <asp:TextBox ID="txtName" runat="server" CausesValidation="True" /> <asp:Label ID="Label2" runat="server" Text="Введите адрес:" Width="140px"></asp:Label> <asp:TextBox id="txtAddress" runat="server" textmode="multiline" rows="5" /> <br/><br /> <asp:Label ID="Label3" runat="server" Text="Введите пароль:" Width="140px"></asp:Label> <asp:TextBox id="txtPassword" runat="server" textmode="password" /> <br /> <br /> <asp:Label ID="Label4" runat="server" Text="Повторите пароль" Width="140px"></asp:Label> <asp:TextBox id="TextBox1" runat="server" textmode="password" /><br /> <asp:Button ID="Button1" runat="server" Text="Submit" /> </form>


Свойство CausesValidation работает, когда элемент управления теряет фокус. В таком случае связанный с ним валидатор показывает значение своего свойства Text.

Нам нужно, чтобы имя было обязательно введено, а пароль совпадал в обоих текстовых полях.

Перетащите RequiredFieldValidator и бросьте его на форму. ControlToValidate установите в txtName. Второй валидатор — Required FieldValidator для пароля. Третий — CompareValidator, который сравнивает значение паролей:

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtName" Display="Static" ErrorMessage="Имя необходимо ввести" runat="server" >*</asp:RequiredFieldValidator>

<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Пароль не должен быть пустым" ControlToValidate="txtPassword1">*</asp:RequiredFieldValidator>

<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="txtPassword1" ErrorMessage="Пароли должны совпадать!" ControlToCompare="txtPassword2"></asp:CompareValidator><br />

А также один ValidationSummary:

<asp:ValidationSummary ID="ValidationSummary1" runat="server" />

Поставим кнопку, при нажатии на которую будет происходить проверка:

<asp:Button ID="Button1" runat="server" Text="Валидация" OnClick="Validate_Click" />



Обработчик нажатия на кнопку подтверждает ввод, если валидация прошла успешно:

protected void Validate_Click(object sender, EventArgs e) { if (Page.IsValid) { lblName.Text = ""; lblAddress.Text = ""; lblPassword.Text = ""; input.Visible = false; if (txtName.Text != "") lblName.Text = "Вы ввели имя: " + txtName.Text; if (txtAddress.Text != "") lblAddress.Text = "Вы ввели адрес: " + txtAddress.Text; if (txtPassword1.Text != "") lblPassword.Text = "Вы ввели пароль: " + txtPassword1.Text + "<br>Спасибо за регистрацию!"; } }

Вся проверка этой страницы происходит у клиента. Можете даже остановить сервер, чтобы в этом убедиться. Только когда все данные введены правильно, происходит отправка формы на сервер.


Содержание раздела