2013-02-12 2 views
1

Я решил использовать валидатор ASP.NET для проверки моих десятков входов моего WebForm. Он отлично работает на стороне Клиент. Я имею в виду, я совершенно нормален с проверкой входов без «Проводки страницы назад» и т.д.Насколько надежным является ASP.NET Validator?

Но когда я пытаюсь использовать валидатор на коде позади, это дает мне, что атрибут Page.Isvalid, и я запутаться с его надежностью. Вот вопросы, на которые я не мог ответить сам:

  1. Является Validator достаточно надежным, чтобы его можно использовать на стороне клиента? (Кроме того, отключить javascript, может ли это быть обработано?)
  2. Как этот валидатор достигает информации о действительности на стороне сервера? (Есть сгенерированный C# Validator код где-то или занимает информацию непосредственно из стороны клиента?)

Вот код, который я написал, чтобы проверить свои входы и на стороне сервера:

foreach (IValidator iValidator in Page.Validators) 
      { 
       if (!iValidator.IsValid) { return false; } 
      } 

Но, независимо от .aspx и .js? Могу ли я полагаться на него на стороне сервера?

ответ

2

Вы всегда должны проверять и на серверах, это делается в основном автоматически, вызывая Page.Validate.

От MSDN:

Этот метод вызывается, когда пользователь щелкает любой серверный элемент управления ASP.NET , который имеет CausesValidation набор свойство истинно, которое является по умолчанию. К ним относятся кнопки, ImageButton и LinkButton Web сервер управления, в HtmlInputButton, HtmlInputImage и HtmlButton HTML Серверные элементы управления и элементы управления, которые могут автоматически размещать назад сервера, такие как TextBox, CheckBox, ListControl и управления BulletedList ,

Если вы хотите, чтобы заставить проверку другой ValidationGroup вы можете вызвать его вручную:

Page.Validate("MyValidationGroup"); 
If(Page.IsValid) 
{ 
    // ... 
} 

Обратите внимание, что вы должны проверить Page.IsValid только после того, как вы назвали метод Page.Validate или установить CausesValidation свойство true в обработчике событий OnServerClick для серверного элемента управления ASP.NET, который инициировал обработку формы.

+1

Благодарим за дополнительную информацию, но как работает этот Page.IsValid? – 3yanlis1bos

+1

@ 3yanlis1bos: Это просто свойство, которое ничего не возвращает, но возвращает 'bool', который был установлен из' Page.Validate (validationGroup) '. Этот метод вызовет любой связанный валидатор метод 'Validate', например' RequiredFieldValidator', который проверяет, является ли соответствующий элемент управления ('ControlToValidate') пустым или нет. –

+1

Откуда эта информация о действительности? Является ли он зависимым от js или чего-либо изменяемого на стороне клиента, или это действительно происходит из методов, которые хранятся в dll? – 3yanlis1bos

Смежные вопросы