2010-01-04 3 views
6

У меня есть веб-форма ASP.NET, которую я хочу проверить на стороне клиента и на стороне сервера, используя те же элементы управления проверки. Я не могу найти решение для этого - проверка клиента отлично работает, но когда я отключу javascript - он игнорирует проверку.сторона сервера проверки ASP.NET

Помощь будет очень признательна.

Roman

+0

вы можете дать нам больше информации? В частности, какие проверки вы используете? Встроенные валидаторы ASP.NET? Если да, то какой из них вы используете (например, CustomValidator). Некоторые фрагменты кода с первичным кодом всегда помогают. Наконец, используете ли вы панели обновления или что-нибудь AJAX-y? –

+0

Использование обычных валидаторов, никаких CustomValidator вообще. Ничего AJAXy, никаких панелей ... ничего. просто простая форма :) – Roman

ответ

9

Вы всегда можете вызвать проверку с помощью validator1.Validate() метода, который будет делать на стороне сервера сравнения. Проверьте Page.IsValid, чтобы убедиться, что проверка на стороне сервера не выполняется? Я думаю, вы можете вызвать его через Page.Validate().

НТН

15

Page.Validate() Явное называют на стороне сервера.

Или перегружен Page.Validate(string), чтобы настроить таргетинг на одну из ваших групп валидации.

Update:

Я забыл, после запуска Validate (..), проверьте Page.IsValid property - это до вас, чтобы остановить эту страницу из представления, если это свойство == false.

+0

Привет, Я пробовал это - Но все равно не работал. Я использую регулярные валидаторы asp.net. даже не обычным. , когда я отключу javascript - он просто проходит, даже если я явно использую Page.Validate(); – Roman

+0

Хммммм ... если вы еще этого не сделали, попробуйте перегруженную версию. В противном случае, какой метод или событие вы вызываете. PageValidate from? –

+0

Я пропустил лодку на этом, забыв о Page.IsValid. –

3

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

Смотрите примечание в этой статье сразу после рисунка 2 :, в котором говорится:

Дважды Проверка на стороне клиента Валидация

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

http://msdn.microsoft.com/en-us/library/aa479013.aspx

Однако, вы можете принудительно проверки на сервере с помощью вызова Page.Validate()

3

Roman,

Вы можете использовать ASP.net пользовательский валидатор для получения как клиент и сервер для проверки. Таким образом, если вы отключите js, вы все равно должны нажать на метод проверки сервера. В этом примере функция «ClientValidate» будет определена в блоке javascript на вашей странице, а функция «ServerValidate» будет существовать в вашем файле codebehind.

<asp:textbox id="textbox1" runat="server"> 
<asp:CustomValidator id="valCustom" runat="server" 
    ControlToValidate="textbox1" 
    ClientValidationFunction="ClientValidate" 
    OnServerValidate="ServerValidate" 
    ErrorMessage="*This box is not valid" dispaly="dynamic">* 
</asp:CustomValidator> 
+0

Все валидаторы ASP.NET обеспечивают проверку на стороне клиента и сервера, а не только CustomValidator. –

0

Найден ответ! Ответ заключается в том, чтобы использовать Page.Validate(), а затем проверить для параметра Page.IsValid, чтобы проверить, была ли проверка правильной или нет. Только использование параметра Page.Validate() не помогло - код продолжался и не останавливался.

Спасибо, ребята, Roman

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