2010-01-04 248 views
6

我有一个ASP.NET网络表格,我想验证客户端和服务器端,使用相同的验证控件。 我似乎无法找到解决方案 - 客户端验证很好,但是当我禁用JavaScript - 它忽略验证。ASP.NET验证服务器端

帮助将不胜感激。

罗马

+0

你能不能给我们更多的信息?具体来说,你使用了什么验证控件?内置的ASP.NET验证器?如果是这样,那么您正在使用哪些(例如CustomValidator)。有些代码片段总是有帮助的。最后,你使用更新面板或任何AJAX-Y? – 2010-01-04 17:33:41

+0

使用常规验证器,完全没有CustomValidator。 没有AJAXy,没有面板...什么都没有。只是一个普通的形式:) – Roman 2010-01-04 18:23:08

回答

9

您可以随时通过validator1.Validate()方法,它会做服务器端的比较触发验证。检查Page.IsValid以查看服务器端验证是否未执行?我想你可以通过Page.Validate()来调用它。

HTH

15

显式调用服务器端Page.Validate()

或超载的Page.Validate(string)定位您的验证组之一。

更新:

我忘了,你运行验证(..)之后,检查Page.IsValid property - 这取决于你从当这个属性== false停止提交页面。

+0

嗨, 我试过这个 - 但仍然没有工作。 我使用常规的asp.net验证器。即使不是自定义的。 当我禁用JavaScript - 它只是通过,即使我明确使用Page.Validate(); – Roman 2010-01-04 18:22:11

+0

嗯......如果你还没有,尝试重载的版本。 否则,您从哪个方法或事件中调用Page.Validate? – 2010-01-04 18:32:44

+0

忘记了Page.IsValid,我错过了那条船。 – 2010-01-04 18:38:37

3

如果您使用的是标准验证控件,即使指定了客户端验证,也会始终在服务器上重新验证数据。

见注意本文中图2 :,它说之后:

仔细检查客户端验证

一个有趣的一点是,即使 虽然表单数据进行验证的 客户端(不需要 附加请求,并从服务器响应 验证数据), 输入的数据在 服务器上重新验证。在 客户端上检查数据并发现有效后,使用相同的 验证规则在服务器上重新检查 。这些规则 你建立,以确保对某些 棘手的程序员在那里试图 绕过验证过程 张贴页面到服务器,就好像 它通过验证。

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

但是,您可以通过调用Page.Validate()

3

罗马迫使服务器上验证,

可以使用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> 
+0

所有ASP.NET验证程序都提供客户端和服务器端验证 - 不仅仅是CustomValidator。 – 2010-01-04 17:46:25

0

找到答案! 答案是使用Page.Validate(),然后检查Page.IsValid以检查验证是否有效。 只有使用Page.Validate()没有帮助 - 代码继续,并没有停止。

谢谢你们, 罗马