У меня есть веб-форма ASP.NET, которая я хочу проверить Клиентскую и Серверную сторону, с помощью тех же средств управления проверкой. Я, может казаться, не нахожу решение для этого - клиентская проверка работает отлично, но когда я отключаю JavaScript - Это игнорирует проверку.
Справка очень ценилась бы.
Римлянин
Вы всегда можете вызвать валидацию методом validator1.Validate()
, который проведет сравнение на стороне сервера. Проверьте Page.IsValid
, чтобы убедиться, что проверка на стороне сервера не выполняется? Думаю, вы можете вызвать его через Page.Validate()
.
HTH
.Если вы используете стандартные элементы управления валидацией, данные всегда повторно проверяются на сервере, даже если указана валидация на клиентской стороне.
Смотрите примечание в этой статье сразу после рисунка 2:, где сказано:
Double-Checking Client-Side Validation
Интересный момент в том, что даже хотя данные формы подтверждаются клиент (исключая необходимость дополнительные запросы и ответы от сервера для проверки данных), введенные данные повторно проверяются на Сервер. После проверки данных клиент и признан действительным, это перепроверенный на сервере с использованием того же метода правила проверки. Это правила, которые вы устанавливаете, чтобы обеспечить против некоторых каверзный программист, пытающийся обходить процесс проверки размещение страницы на сервере, как будто она прошла проверку.
http://msdn.microsoft.com/en-us/library/aa479013.aspx
Однако, вы можете принудительно провести проверку на сервере, вызвав Page.Validate()
.Явный вызов Page.Validate() на стороне сервера.
Или перегруженная Page.Validate(string) для одной из ваших групп проверки.
Обновление:
Я забыл, что после запуска Validate(...) проверьте свойство Page.IsValid
- это вы должны остановить отправку страницы, если это свойство == false
.
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>
Найден ответ! Ответ заключается в том, чтобы использовать Page.Validate(), а затем проверить Page.IsValid на корректность валидации. Только использование Page.Validate() не помогло - код продолжился и не остановился.
Спасибо ребята, Рим