ASP.NET验证服务器端

时间:2010-01-04 17:30:49

标签: asp.net validation client-side server-side

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

非常感谢帮助。

罗马

5 个答案:

答案 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()没有帮助 - 代码继续并且没有停止。

谢谢你们, 罗马