Результаты специальных проверок серверных элементов управления ASP.NET

Visual Studio 2010

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

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

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

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

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

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

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

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

  • Если конечный элемент управления, введенный в свойство ControlToValidate исходного элемента управления, не имеет значения, то свойство IsValid считается true, и проверка выполняется.

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

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

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

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

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

Поэтому следует обеспечить, чтобы для каждого отдельного поля проверка проводилась в достаточном объеме. В этом примере нужно обеспечить, чтобы пользователь ввел правильную дату в поле начальной даты. Во многих случаях необходимо включить элемент управления RequiredFieldValidator в дополнение к проверяющему элементу управления, который проверяет содержимое конкретной записи. В некоторых случаях также полезно добавить элемент управления CompareValidator с Operator равным DataTypeCheck, который выполняет простую проверку без сравнения с другим значением или элементом управления.

Показ: