Пошаговое руководство. Проверка сведений, вводимых пользователем на странице веб-форм

Visual Studio 2010

В этом пошаговом руководстве содержится описание использования проверяющих элементов управления ASP.NET для проверки сведений, вводимых пользователем на веб-странице. В руководстве рассматривается работа с некоторыми элементами управления, которые выполняют всю проверку автоматически без необходимости создания кода. Кроме того, будет также создан проверяющий элемент управления с написанием кода, что демонстрирует добавление собственной логики к структуре проверки страницы. И наконец, будет рассмотрена проверка сведений, вводимых пользователем, в определенных условиях в зависимости от вариантов, выбираемых пользователем на странице.

В пошаговом руководстве представлено создание страницы для веб-узла, который допускает запросы на резервирование пользователей. Так как целью данного пошагового руководства является демонстрация проверки, характер резервирования не имеет особого значения (например, это может быть резервирование мест в ресторане, на собрании клуба сообщества и т. п.), и в действительности на данной странице резервирование не осуществляется.

Создаваемая страница используется для запроса адреса электронной почты пользователя, количества людей для резервирования и предпочтительной даты. Страница также позволяет пользователю оставлять запрос на подтверждение резервирования по телефону. (По умолчанию на данной странице, если эта возможность реализована, запрашивается подтверждение по электронной почте.)

Примечание о безопасностиПримечание по безопасности

По умолчанию страница Web Forms автоматически проверяет, не пытается ли злоумышленник передать в приложение скрипт, даже если проверяющие элементы управления не используются. Дополнительные сведения см. в разделе Общие сведения об использовании скриптов.

В процессе выполнения этого пошагового руководства вы научитесь:

  • Использовать проверяющие элементы управления для проверки сведений, введенных пользователем на веб-странице ASP.NET.

  • Форматировать отображение сообщений об ошибках проверки.

  • Создавать пользовательскую проверку путем написания кода.

Проект Visual Studio с исходным кодом этого примера доступен на следующей странице: Загрузить.

Для выполнения этого пошагового руководства потребуется следующее.

В первой части пошагового руководства вам предстоит создать веб-узел и страницу для работы со стилями. Если веб-узел в Visual Studio уже создан (например, при работе с разделом Пошаговое руководство. Создание базовой веб-страницы в Visual Studio), можно использовать его и перейти к пункту "Добавление элементов управления" далее в этом пошаговом руководстве. В противном случае создайте новый веб-сайт.

В данном пошаговом руководстве используется проект веб-сайта. Вместо этого можно использовать проект веб-приложения. Сведения о различиях между этими типами веб-проектов см. в разделе Сравнение проектов веб-приложений с проектами веб-сайтов.

Создание веб-сайта на базе файловой системы

  1. Откройте Visual Studio или Visual Web Developer Express.

  2. В меню Файл выберите пункт Новый веб-узел.

    Откроется диалоговое окно Новый веб-узел.

  3. В разделе Установленные шаблоны щелкните Visual Basic или VisualC#, затем выберите Веб-сайт ASP.NET.

  4. В поле Расположениев Интернете выберите поле Файловая система и введите имя папки, в которой будут храниться страницы веб-сайта.

    Например, введите имя папки C:\WebSites.

  5. Нажмите кнопку ОК.

    Visual Studio создает проект веб-сайта, включающий стандартные функциональные возможности для макета (главную страницу, страницы содержимого Default.aspx и About.aspx и каскадную таблицу стилей), технологии Ajax (файлы клиентских скриптов) и проверки подлинности (членства ASP.NET).

Добавление элементов управления

Будут использованы только некоторые элементы управления для запроса на ввод пользователем информации, необходимой для резервирования.

Добавление элементов управления и текста

  1. В обозревателе решений щелкните правой кнопкой мыши проект и выберите команду Добавить новый элемент.

    Откроется диалоговое окно Добавление нового элемента.

  2. В разделе Установленные шаблоны выберите Visual Basic или Visual C# и затем — Форма Web Form.

  3. В качестве имени новой веб-страницы введите ValidationExample.aspx, затем нажмите кнопку Добавить.

  4. Перейдите в представление Конструктор.

  5. Введите заголовок страницы, например Отправка запроса на резервирование, а затем нажмите клавишу ВВОД для создания новой строки под заголовком.

  6. Из группы Стандартныепанели элементов перетащите перечисленные ниже элементы управления на страницу в область под заголовком и задайте их свойства, как показано в следующей таблице. Перетащив каждый элемент управления на страницу, нажмите клавишу ВВОД для размещения элементов управления в отдельных строках, и дважды нажмите клавишу ВВОД перед элементом управления Button, чтобы оставить место для дополнительных элементов управления, которые будут добавлены позже.

    1. Элемент управления

    1. Свойства

    TextBox

    ID : textEmail

    TextBox

    ID : textNumberInParty

    TextBox

    ID : textPreferredDate

    Button

    ID : buttonSubmit

    Text : Отправить запрос

    ValidationGroup : AllValidators

    Label

    ID : labelMessage

    Text : (пусто)

  7. Введите текст перед текстовыми полями в качестве надписей.

  8. Дважды нажмите кнопку Submit Request, чтобы создать обработчик событий Click, а затем добавьте код, как показано в следующем примере:

    Protected Sub buttonSubmit_Click(ByVal sender As Object, _
           ByVal e As System.EventArgs)
        If Page.IsValid Then
          labelMessage.Text = "Your reservation has been processed."
        End If
    End Sub
    

    protected void buttonSubmit_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
          labelMessage.Text = "Your reservation has been processed.";
        }
    }
    

    Обработчик кнопки просто отображает сообщение; действительная обработка не выполняется. Однако отображение сообщения позволит протестировать эффективность проверки далее в пошаговом руководстве.

  9. На ASPX-странице перейдите в представление Конструктор, дважды щелкните пустую область на странице, чтобы создать обработчик Page_Load, а затем добавьте код, как показано в следующем примере:

    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As EventArgs)
        labelMessage.Text = ""
    End Sub
    

    protected void Page_Load(object sender, EventArgs e)
    {
        labelMessage.Text = "";
    }
    

    При каждой загрузке страницы этот код очищает все сообщения, которые могли остаться после предыдущей обратной передачи.

Для воображаемой системы резервирования может потребоваться применение следующих проверок:

  • Необходимо указать адрес электронной почты в правильном формате, например proverka@example.com. (Как правило, проверка того, что адрес электронной почты является действительным, нецелесообразна; однако можно проверить соответствие адреса правильному шаблону адресов электронной почты.)

  • Необходимо также ввести количество людей в числовом формате.

  • Необходимо указать предпочтительную дату.

Можно добавить все эти сведения для проверки с помощью проверяющих элементов управления, которые выполняют все проверки и автоматически отображают ошибки.

ПримечаниеПримечание

Позднее в этом пошаговом руководстве будет добавлена еще одна проверка, чтобы убедиться, что пользователи указали действительную дату.

Добавление основной проверки

  1. На ASPX-странице перейдите в представление Конструктор.

  2. Перетащите элемент управления RequiredFieldValidator из группы Проверкапанели элементов и поместите его рядом с текстовым полем textEmail.

  3. Задайте следующие свойства элемента управления RequiredFieldValidator.

    Свойство

    Параметр

    ControlToValidate

    textEmail

    Связывает проверяющий элемент управления с текстовым полем, содержимое которого необходимо проверить.

    Display

    Динамический

    Указывает, что визуализация элемента управления осуществляется (и он занимает пространство на странице), только если он необходим для отображения ошибки.

    ErrorMessage

    Требуется адрес электронной почты.

    Предоставляет текст для элемента управления ValidationSummary, который будет настроен далее в пошаговом руководстве.

    Text

    *

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

    ValidationGroup

    AllValidators

    Можно объединить проверяющие элементы управления, как и переключатели, в группы, которые воспринимаются как одно целое. Дополнительные сведения о группах проверяющих элементов управления представлены далее в пошаговом руководстве.

    Ранее было выполнено добавление теста для проверки ввода пользователем адреса электронной почты. Проверяющий элемент управления выполняет все проверки и отображает сообщение об ошибке без необходимости добавлять код на страницу.

  4. Перетащите элемент управления RegularExpressionValidator из группы Проверкапанели элементов и поместите его рядом с только что добавленным элементом управления RequiredFieldValidator.

  5. Задайте следующие свойства элемента управления RegularExpressionValidator.

    1. Свойство

    1. Параметр

    ControlToValidate

    textEmail

    Повторно выполняется проверка данных, введенных пользователем в поле адреса электронной почты.

    Display

    Динамический

    ErrorMessage

    Адреса электронной почты должны иметь формат proverka@example.xyz.

    Это сообщение об ошибке длиннее, чем сообщение, отображаемое при использовании элемента управления ValidationSummary.

    Text

    Недопустимый формат!

    Это краткое сообщение об ошибке, отображаемое в элементе управления проверки.

    ValidationGroup

    AllValidators

  6. При выбранном элементе управления RegularExpressionValidator в окне свойств щелкните кнопку с многоточием в поле ValidationExpression.

    Регулярные выражения образуют язык, который можно использовать для поиска точно определенных шаблонов в строках. В элементе управления RegularExpressionValidator можно определить регулярное выражение для шаблона, который является допустимым — в данном случае шаблон для допустимого адреса электронной почты.

    Редактор регулярных выражений содержит список часто используемых регулярных выражений, поэтому вы можете использовать проверяющий элемент управления, не зная синтаксиса регулярного выражения.

  7. В списке Standard Expressions (Стандартные выражения) щелкните Internet E-mail Address (Адрес электронной почты).

    Регулярное выражение для адреса электронной почты помещается в поле Validation Expression (Выражение проверки).

  8. Нажмите кнопку ОК, чтобы закрыть диалоговое окно.

  9. Добавьте другой элемент управления RequiredFieldValidator, используя инструкции, которые были представлены ранее в этой процедуре. Однако в этом случае необходимо связать его с текстовым полем textNumberInParty и задать для его свойства ErrorMessage значение "Укажите количество приглашенных".

  10. Перетащите элемент управления RangeValidator из группы Проверкапанели элементов и поместите его рядом с только что добавленным элементом управления RequiredFieldValidator.

  11. Задайте следующие свойства элемента управления RangeValidator.

    1. Свойство

    1. Параметр

    ControlToValidate

    textNumberInParty

    Display

    Динамический

    ErrorMessage

    Введите число от 1 до 20, чтобы указать количество приглашенных.

    MaximumValue

    20

    В этом случае произвольное, но высокое значение.

    MinimumValue

    1

    В этом приложении для резервирования необходим хотя бы один человек.

    Text

    Введите число от 1 до 20.

    Type

    Integer

    ValidationGroup

    AllValidators

    Этот элемент управления RangeValidator выполняет две функции: удостоверяет, что пользователь вводит данные в цифровом формате, и проверяет, находится ли число в диапазоне между указанными минимальным и максимальным значениями.

Тестирование страницы

Теперь можно выполнить тестирование проверяющих элементов управления, имеющихся на этом этапе.

Тестирование основной проверки

  1. Нажмите клавиши CTRL+F5 для запуска страницы.

  2. Когда страница отобразится в обозревателе, нажмите кнопку Submit Request.

    Отображается несколько ошибок проверки, так как не были заполнены некоторые обязательные поля. Обратите внимание, что ошибки проверки отображаются незамедлительно — передача страницы не выполняется. По умолчанию проверяющие элементы управления вставляют в страницу ECMAScript (JavaScript) со стороны клиента, чтобы выполнить проверку в обозревателе. Это позволяет пользователям незамедлительно видеть ошибки проверки; без клиентского скрипта для проверка ошибок необходимо обращение к серверу, что приводит к увеличению времени выполнения. В действительности отправка страницы невозможна, пока не будут успешно пройдены все проверки на стороне клиента. (Аналогичная проверка выполняется повторно при отправке страницы в качестве меры безопасности.)

  3. Выполните проверку текстового поля textEmail: введите недопустимый адрес электронной почты, а затем — допустимый адрес электронной почты, например свой собственный.

  4. Убедитесь, что введены только числовые значения от 1 до 20 в текстовом поле Number of people in party (Количество приглашенных).

  5. После ввода допустимых значений нажмите кнопку Submit Request (Отправить запрос). Если проверка пройдена для всех элементов управления, появится сообщение Your reservation has been processed (Резервирование было обработано).

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

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

По умолчанию проверяющие элементы управления отображают текст ошибки на месте, то есть они отображают значение свойства Text элемента управления в местоположении элемента управления на странице. Иногда может потребоваться отображение сведений об ошибке иными способами. Проверяющие элементы управления ASP.NET предоставляют следующие дополнительные возможности:

  • Объединение всех ошибок проверки в одном месте. Это действие можно выполнить вместо отображения ошибок на месте или в дополнение к этому. Отображение суммарных ошибок также позволяет отобразить более длинные сообщения об ошибках.

  • Отображение в обозревателе всплывающих сообщений, содержащих сведения об ошибках. Этот параметр работает только в обозревателях с поддержкой скриптов.

Для добавления обоих параметров отображения можно использовать элемент управления ValidationSummary. В этой части пошагового руководства на страницу будут добавлены оба средства отображения.

Отображение сведений о проверке альтернативными способами

  1. Перетащите элемент управления ValidationSummary из группы Проверкапанели элементов в нижнюю часть страницы.

  2. Присвойте свойству ValidationGroup элемента управления ValidationSummary значение AllValidators.

  3. Запустите страницу.

  4. Выполните такую же проверку, которая выполнялась ранее в соответствии с инструкциями в этом пошаговом руководстве.

    Сведения о каждой ошибке отобразятся в двух местах. Короткое сообщение об ошибке (значение свойства Text проверяющего элемента управления) отобразится в местоположении проверяющего элемента управления. Более длинное сообщение об ошибке (значение свойства ErrorMessage элемента управления) отображается в элементе управления ValidationSummary.

  5. Закройте браузер.

  6. Задайте для свойства ShowMessageBox элемента управления ValidationSummary значение true.

  7. Запустите страницу.

  8. Выполните эти же проверки.

    На этот раз каждая ошибка отобразится в виде всплывающего сообщения в обозревателе.

  9. Закройте браузер.

Проверяющие элементы управления ASP.NET не включают элемент управления, который автоматически проверяет правильность указанной даты. Однако для этой цели можно использовать элемент управления CustomValidator. Пользовательский проверяющий элемент управления позволяет создавать собственный код для проверки любого условия, удовлетворения которого требует приложение. В этом пошаговом руководстве используется CustomValidator, чтобы проверить, что значение, вводимое пользователем в текстовом поле textPreferredDate, может быть преобразовано в значение даты.

Будут добавлены два блока пользовательского кода проверки. Первый блок — это пользовательский код проверки, который выполняется при отправке страницы. Для элемента управления CustomValidator должна всегда присутствовать логика проверки на стороне сервера. Будет также создан определенный клиентский скрипт (ECMAScript или JavaScript), который выполняет аналогичную проверку в обозревателе, что обеспечивает незамедлительную обратную связь с пользователем.

Использование пользовательского проверяющего элемента управления для проверки правильности указанной даты

  1. Из группы Проверкапанели элементов перетащите на страницу элемент управления CustomValidator и поместите его рядом с текстовым полем textPreferredDate.

  2. Задайте следующие свойства элемента управления CustomValidator.

    Свойство

    Параметр

    ControlToValidate

    textPreferredDate

    Display

    Динамический

    ErrorMessage

    Введите дату в формате м/д/гггг.

    Text

    Недопустимый формат даты (необходимо использовать формат м/д/гггг).

    ValidationGroup

    AllValidators

  3. Дважды щелкните элемент управления CustomValidator, чтобы создать обработчик событий ServerValidate, а затем добавьте код, как показано в следующем примере:

    Protected Sub CustomValidator1_ServerValidate( _
       ByVal source As Object, _
       ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs)
       Try
          DateTime.ParseExact(args.Value, "d", _
             System.Globalization.DateTimeFormatInfo.InvariantInfo)
          args.IsValid = True
       Catch
          args.IsValid = False
       End Try
    End Sub
    

    protected void CustomValidator1_ServerValidate(object source, 
        ServerValidateEventArgs args)
    {
        try
        {
            DateTime.ParseExact(args.Value, "d",
                System.Globalization.DateTimeFormatInfo.InvariantInfo);
            args.IsValid = true;
        }
        catch
        {
           args.IsValid = false;
        }
    }
    

    Этот код выполняется, когда пользователь отправляет страницу. Код взаимодействует с проверяющим элементом управления с помощью объекта ServerValidateEventArgs (args), передаваемого в обработчик. Значение, введенное пользователем в текстовом поле textPreferredDate, передается как свойство Value объекта args. После проверки правильности данных, введенных пользователем, для свойства IsValid объекта args устанавливается значение true или false. Если для свойства установлено значение false, то проверяющий элемент управления будет отображать сообщение об ошибке.

    В этом примере код использует блок try-catch, чтобы определить возможность преобразования данных, введенных пользователем, в объект DateTime. Если пользователь вводит недопустимое значение (которое не соответствует дате в формате м/д/гггг), то метод ParseExact объекта DateTime вызывает исключение, и выполняется блок Catch.

    ПримечаниеПримечание

    Пример кода указывает, что формат, синтаксический анализ которого необходимо выполнить, не зависит от языка и региональных параметров. Если требуется использовать текущее значение языка и региональных параметров, можно задать для параметра provider значение null.

  4. Добавьте код в обработчик Button_Click, как показано в следующем примере:

    Protected Sub buttonSubmit_Click(ByVal sender As Object, _
           ByVal e As System.EventArgs)
       If Page.IsValid Then
          labelMessage.Text = "Your reservation has been processed."
       Else
         labelMessage.Text = "Page is not valid."
       End If
    End Sub
    

    protected void buttonSubmit_Click(object sender, EventArgs e)
    {
        if(Page.IsValid)
        {
            labelMessage.Text = "Your reservation has been processed.";
        }
        else
        {
            labelMessage.Text = "Page is not valid.";
        }
    }
    

    При использовании элемента управления CustomValidator необходимо проверить свойство Page.IsValidв любом процессе обработки на сервере, чтобы убедиться, что пройдены все необходимые проверки. Свойство IsValid возвращает общее состояние всех проверяющих элементов управления на странице. Это свойство используется, чтобы убедиться, что все проверяющие элементы управления прошли обработку на стороне сервера.

На этом этапе добавлен код на стороне сервера для элемента управления CustomValidator, чтобы проверить правильность даты. Как было указано ранее в данном пошаговом руководстве, проверяющие элементы управления также проверяют данные, вводимые пользователем, с помощью клиентского скрипта. Можно также добавить клиентский скрипт в элемент управления CustomValidator. Фактически создается клиентский скрипт, который дублирует логику, реализуемую элементом управления на стороне сервера. Создание пользовательского кода проверки на стороне клиента не всегда является целесообразным (например, если пользовательский код проверяет данные, вводимые пользователем, путем поиска в базе данных на стороне сервера). Однако в этом случае можно создать код на стороне клиента, который выполняет по сути такую же проверку, как и код на стороне сервера.

Добавление клиентского скрипта в проверяющий элемент управления

  1. Откройте страницу Default.aspx или перейдите к ней, а затем перейдите в представление Исходный код.

  2. В элемент <head> страницы добавьте следующий блок клиентского скрипта:

    <script language="javascript">
    function validateDate(oSrc, args)
    {
      var iDay, iMonth, iYear;
      var arrValues;
      arrValues = args.Value.split("/");
      iMonth = arrValues[0];
      iDay = arrValues[1];
      iYear = arrValues[2];
    
      var testDate = new Date(iYear, iMonth - 1, iDay);
      if ((testDate.getDate() != iDay) ||
          (testDate.getMonth() != iMonth - 1) ||
          (testDate.getFullYear() != iYear))
      {
         args.IsValid = false;
         return;
      }
          
      return true;
    }</script>
    
    ПримечаниеПримечание

    ECMAScript (JavaScript) учитывает регистр; вводите код в точном соответствии с тем, как он отображается.

    Этот код имеет сходство с проверкой на стороне сервера, но не является настолько строгим. Данные, введенные пользователем, переданы в функцию как свойство Value объекта args и можно задать свойство IsValid объекта, чтобы указать, прошло ли значение проверку. В этом примере код выполняет проверку правильности ввода даты в числовом формате.

    Обратите внимание, что клиентский скрипт кода для пользовательской проверки слегка отличается от клиентского скрипта кода сервера. ECMAScript не предоставляет абсолютно такие же функциональные возможности, как платформа .NET Framework. Поэтому ECMAScript анализирует введенный текст, а не код ParseExact, который используется на сервере для проверки даты. Однако две проверки (на стороне клиента и на стороне сервера) обладают достаточным сходством и предоставляют необходимые функциональные возможности.

  3. Поместите курсор на элемент asp:customvalidator, чтобы выбрать его.

  4. В окне свойств установите для свойства ClientValidationFunction элемента управления значение validateDate, которое является именем только что созданной функции ECMAScript.

    На этом этапе добавлена пользовательская проверка, которая выполняется как в клиентском скрипте для незамедлительной проверки данных, введенных пользователем, так и повторно при отправке страницы на сервер.

Тестирование пользовательской проверки

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

Тестирование пользовательской проверки

  1. Временно отключите проверку на стороне клиента, установив для свойства EnableClientScript элемента управления CustomValidator значение false.

  2. Нажмите клавиши CTRL+F5 для запуска страницы.

  3. Введите адрес электронной почты и число приглашенных людей, чтобы эти поля прошли проверку.

  4. В текстовом поле даты введите строку, которая явно не является датой, а затем нажмите кнопку Submit Request.

    Страница выполняет цикл обработки для веб-сервера; при этом происходит сбой проверки на стороне сервера. Происходит сбой проверки свойства IsValid и labelMessage отображает сообщение "Page is not valid" (Недопустимая страница).

  5. Введите допустимое значение даты (например 11/17/2010) и нажмите кнопку.

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

  6. Закройте браузер.

  7. Повторно включите проверку на стороне клиента, установив для свойства EnableClientScript элемента управления CustomValidator значение true.

  8. Запустите страницу еще раз и введите допустимые значения в полях адреса электронной почты и числа приглашенных людей.

    Введите допустимое значение даты в текстовом поле даты, затем нажмите клавишу TAB. (Не нажимайте кнопку.)

    Про потере фокуса текстовым полем даты выполняется скрипт проверки на стороне клиента и отображается сообщение об ошибке.

    ПримечаниеПримечание

    Если в обозревателе Internet Explorer используется функция автозаполнения, выбор значения в списке автозаполнения приводит к вводу значения в текстовом поле, но проверяющий элемент управления на стороне клиента не выполняется.

  9. Нажмите кнопку Submit Request.

    Так как произошел сбой проверки текстового поля даты на стороне клиента, страница не отправляется.

  10. Исправьте значение даты и нажмите клавишу TAB еще раз.

    Сообщение об ошибке исчезает. Теперь можно отправить форму.

В завершающей части пошагового руководства в форму резервирования будут добавлены некоторые дополнительные сведения. Пользователи могут установить флажок, чтобы указать необходимость подтверждения резервирования по телефону. В этом случае они должны ввести номер телефона. Поэтому страница должна содержать два дополнительных элемента управления: флажок и текстовое поле.

Как и ранее, необходимо использовать проверку данных, введенных пользователем. Элемент управленияRequiredFieldValidator используется, чтобы убедиться, что пользователи ввели номер телефона, а элемент управления RegularExpressionValidator — для проверки его формата. Ввод номера телефона является необязательной возможностью; необходимо проверить номер телефона, только если пользователь установил флажок Confirm reservation by phone. Поэтому следует написать определенный простой код, который включает или отключает проверку номера телефона в зависимости от состояния флажка.

Добавление условной проверки

  1. Из группы Стандартныепанели элементов перетащите элемент управления CheckBox на страницу над кнопкой Отправить запрос, нажмите клавишу ВВОД, чтобы создать пустую строку под элементом управления, и установите следующие свойства.

    Свойство

    Параметр

    ID

    checkPhoneConfirmation

    AutoPostBack

    True

    Когда пользователь выбирает флажок, страница выполняет цикл обработки и в зависимости от результата выбора текстовое поле и его проверку.

    CausesValidation

    False

    Выбор CheckBox не приводит к автоматическому включению проверки.

    Text

    Confirm reservation by telephone (Подтвердить резервирование по телефону).

  2. Перетащите элемент управления TextBox на страницу под элемент управления CheckBox и задайте следующие свойства:

    1. Свойство

    1. Параметры

    ID

    textPhoneNumber

    Enabled

    False

    Текстовое поле не включится, пока пользователь не установит флажок.

  3. Введите текст, например Номер телефона:, рядом с текстовым полем для ввода номера телефона в качестве заголовка.

  4. Из группы Проверкапанели элементов перетащите элемент управления RequiredFieldValidator на страницу рядом с текстовым полем номера телефона и задайте следующие свойства.

    Свойство

    Параметр

    ID

    validatorRequiredPhoneNumber

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

    ControlToValidate

    textPhoneNumber

    Display

    Динамический

    ErrorMessage

    You must provide a phone number. (Необходимо указать номер телефона.)

    Text

    *

    ValidationGroup

    (Оставьте пустым)

    Если это свойство оставлено пустым, проверяющий элемент управления не принадлежит к группе AllValidators, установленной для других проверяющих элементов управления на странице. Следовательно, по умолчанию этот проверяющий элемент управления не проверяется при выборе элемента управления buttonSubmit.

  5. Перетащите элемент управления RegularExpressionValidator на страницу и задайте следующие свойства:

    Свойство

    Параметр

    ID

    validatorRegExPhoneNumber

    ControlToValidate

    textPhoneNumber

    Display

    Динамический

    ErrorMessage

    Недопустимый формат номера телефона

    Text

    Недопустимый формат

    ValidationExpression

    (Используйте диалоговое окно редактора регулярных выражений для выбора номера телефона в США или другого выражения номера телефона.)

    ValidationGroup

    (Оставьте пустым)

  6. Дважды щелкните элемент управления checkPhoneConfirmation, чтобы создать обработчик событий CheckedChanged, а затем добавьте код, как показано в следующем примере:

    Protected Sub checkPhoneConfirmation_CheckedChanged( _
       ByVal sender As Object, _
       ByVal e As System.EventArgs)
       If checkPhoneConfirmation.Checked = True Then
          textPhoneNumber.Enabled = True
          validatorRequiredPhoneNumber.ValidationGroup = "AllValidators"
          validatorRegExPhoneNumber.ValidationGroup = "AllValidators"
       Else
          textPhoneNumber.Enabled = False
          validatorRequiredPhoneNumber.ValidationGroup = ""
          validatorRegExPhoneNumber.ValidationGroup = ""
       End If
    End Sub
    

    protected void checkPhoneConfirmation_CheckedChanged(
        object sender, EventArgs e)
    {
        if(checkPhoneConfirmation.Checked)
        {
            textPhoneNumber.Enabled = true;
            validatorRequiredPhoneNumber.ValidationGroup = 
                "AllValidators";
            validatorRegExPhoneNumber.ValidationGroup = "AllValidators";
        }
        else
        {
            textPhoneNumber.Enabled = false;
            validatorRequiredPhoneNumber.ValidationGroup = "";
            validatorRegExPhoneNumber.ValidationGroup = "";
        }
    }
    

    Когда пользователь выбирает флажок, два проверяющих элемента управления, ассоциированных с тестовым полем, добавляются в группы проверки, к которой принадлежат другие проверяющие элементы управления. В результате все проверяющие элементы управления на странице, включая элементы управления для номера телефона, будут проверяться при отправке пользователем страницы. Если пользователь снимает флажок, проверяющие элементы управления удаляются из группы, а следовательно, их обработка не выполняется при нажатии кнопки Submit Request (Отправить запрос).

Тестирование условной проверки

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

Тестирование условной проверки

  1. Нажмите клавиши CTRL+F5 для запуска страницы.

  2. Введите сведения в поля ввода адреса электронной почты, числа приглашенных людей и даты.

  3. Нажмите кнопку Submit Request (Отправить запрос).

    Выполняется отправка страницы, и отображается предупреждение.

  4. Установите флажок Confirm reservation by phone (Подтвердить резервирование по телефону).

  5. Нажмите кнопку Submit Request (Отправить запрос) еще раз.

    На этот раз отображается сообщение об ошибке (звездочка рядом с текстовым полем ввода номера телефона). При установке флажка была включена проверка текстового поля.

  6. Введите недопустимый номер телефона, затем нажмите кнопку Submit Request еще раз, чтобы убедиться, что текстовое поле не допускает ввода неверного номера телефона.

  7. Введите номер телефона в правильном формате, затем нажмите кнопку отправки, чтобы убедиться, что проверяющий элемент управления допускает ввод данных в правильном формате.

    ПримечаниеПримечание

    Если в редакторе регулярных выражений выбрано значение Номер телефона в США для свойства ValidationExpression элемента управления RegularExpressionValidator, то номер телефона в правильном формате должен состоять из кода региона (дополнительное поле из 3 цифр, заключенных в скобки или отделенных от следующих цифр дефисом), за которым следуют 3 цифры, дефис и еще 4 цифры. Например, допустимыми значениями будут (425) 555-0123, 425-555-0123 или 555-0123.

Проверка, добавленная в страницу Web Forms, иллюстрирует основные понятия, относящиеся к проверяющим веб-элементов управления.

Важным аспектом этой проверки являются сведения о том, как это поможет повысить безопасность веб-узла. Дополнительные сведения см. в разделе Общие сведения об угрозах безопасности веб-приложений.

Показ: