Практическое руководство. Программная проверка серверных элементов управления ASP.NET

Visual Studio 2010

Обновлен: Ноябрь 2007

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

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

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

  • Если нужно определить допустимость элемента управления (или всей страницы) в обработчике событий Page_Load. На этой стадии обработки страницы проверяющие элементы управления еще не вызваны, поэтому свойство страницы или отдельных элементов управления IsValid не задано. (Исключение возникает при попытке получения значения этого свойства.) Однако чтобы определить допустимость значений, можно программно вызвать проверку.

  • Если элементы управления (элементы управления вводом или проверяющие элементы управления) добавляются во время выполнения.

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

hxet6xwx.alert_security(ru-ru,VS.100).gifПримечание о безопасности.

По умолчанию на веб-страницах ASP.NET автоматически проверяется, не пытаются ли злоумышленники отправить в приложение сценарий или элементы HTML. В случае отключения этой функции метод ValidateInput можно вызвать самостоятельно. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

Выполнение программной проверки

  • Вызовите метод Validate проверяющего элемента управления.

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

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

    hxet6xwx.alert_note(ru-ru,VS.100).gifПримечание.

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

    Даты прибытия и отправления получены из серверных веб-элементов управления TextBox на странице txtArrival и txtDeparture. Дата поездки вводится в третий элемент управления TextBox, txtTourDate, который проверяется элементом управления RangeValidator.

    hxet6xwx.alert_note(ru-ru,VS.100).gifПримечание.

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

    private void Button1_Click(object sender, System.EventArgs e)
    {
        RangeValidator1.MinimumValue = txtArrival.Text;
        RangeValidator1.MaximumValue = txtDeparture.Text;
        RangeValidator1.Type = ValidationDataType.Date;
        RangeValidator1.Validate();
    
        if (!RangeValidator1.IsValid)
        {
            RangeValidator1.ErrorMessage = "The tour date must " +
            "fall between the arrival and departure dates.";
        }
    }
    
    
    
Показ: