我有一个ASP.NET webform,我想使用相同的验证控件来验证客户端和服务器端。 我似乎无法找到解决方案 - 客户端验证工作得很好,但是当我禁用javascript时 - 它会忽略验证。
非常感谢帮助。
罗马
答案 0 :(得分:15)
在服务器端显式调用Page.Validate()。
或重载Page.Validate(string)以定位您的一个验证组。
<强>更新强>
我忘了,在您运行验证(..)后,请检查Page.IsValid
property - 由您决定是否阻止该页面提交此属性== false
。
答案 1 :(得分:9)
您始终可以通过validator1.Validate()
方法触发验证,该方法将进行服务器端比较。检查Page.IsValid
以查看是否未执行服务器端验证?我想你可以通过Page.Validate()
调用它。
HTH
答案 2 :(得分:3)
如果您正在使用标准验证控件,即使指定了客户端验证,也始终会在服务器上重新验证数据。
请参阅图2中的本文中的注释,其中包含:
仔细检查客户端验证
一个有趣的观点是甚至 虽然表单数据已经过验证 客户(不需要 其他请求和回复 从服务器验证数据), 输入的数据将在上面重新验证 服务器。检查数据后 客户端发现有效,它是 使用相同的服务器在服务器上重新检查 验证规则。这些是规则 你建立以确保对某些人 棘手的程序员在那里试图 绕过验证过程 将页面发布到服务器,就好像 它通过了验证。
http://msdn.microsoft.com/en-us/library/aa479013.aspx
但是,您可以通过调用Page.Validate()
强制在服务器上进行验证答案 3 :(得分: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>
答案 4 :(得分:0)
找到答案! 答案是使用Page.Validate()然后检查Page.IsValid以检查验证是否有效。 只使用Page.Validate()没有帮助 - 代码继续并且没有停止。
谢谢你们, 罗马