繁体   English   中英

ASP.NET验证服务器端

[英]ASP.NET Validation server side

我有一个ASP.NET webform,我想使用相同的验证控件来验证客户端和服务器端。 我似乎无法找到解决方案 - 客户端验证工作得很好,但是当我禁用javascript时 - 它忽略了验证。

非常感谢帮助。

罗马

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

或者重载的Page.Validate(字符串)来定位您的一个验证组。

更新:

我忘记了,运行验证(..)后,检查Page.IsValid属性 - 如果此属性== false则由您决定是否停止提交页面。

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

HTH

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

请参阅图2中的本文中的注释,其中说:

双重检查客户端验证

一个有趣的观点是,即使表单数据在客户端上得到验证(消除了对服务器的额外请求和响应以验证数据的需要),输入的数据也会在服务器上重新验证。 在客户端上检查数据并发现有效后,将使用相同的验证规则在服务器上重新检查数据。 这些是你建立的规则,以确保一些棘手的程序员试图通过将页面发布到服务器来绕过验证过程,就像它通过验证一样。

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

但是,您可以通过调用Page.Validate()强制在服务器上进行验证

罗马,

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

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

谢谢你们,罗曼

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM