ASP.NET валидация на стороне сервера - PullRequest
6 голосов
/ 04 января 2010

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

Помощь будет высоко ценится.

Roman

Ответы [ 5 ]

15 голосов
/ 04 января 2010

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

Или перегруженный Page.Validate (строка) для таргетинга на одну из ваших групп проверки.

Обновление:

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

9 голосов
/ 04 января 2010

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

НТН

3 голосов
/ 04 января 2010

Roman

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

<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>
3 голосов
/ 04 января 2010

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

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

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

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

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

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

0 голосов
/ 04 января 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...