【问题标题】:ASP.NET Validation server sideASP.NET 验证服务器端
【发布时间】:2011-01-01 08:04:50
【问题描述】:

我有一个 ASP.NET 网络表单,我想使用相同的验证控件来验证客户端和服务器端。 我似乎找不到解决方案 - 客户端验证效果很好,但是当我禁用 javascript 时 - 它忽略了验证。

我们将不胜感激。

罗马

【问题讨论】:

  • 你能给我们更多的信息吗?具体来说,您使用的是什么验证控件?内置的 ASP.NET 验证器?如果是这样,那么您使用的是哪一个(例如 CustomValidator)。一些相关代码的 sn-ps 总是有帮助的。最后,您使用的是更新面板还是 AJAX-y?
  • 使用常规验证器,根本没有 CustomValidator。没有 AJAXy,没有面板……什么都没有。只是一个简单的形式:)

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


【解决方案1】:

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

或重载的Page.Validate(string) 以您的验证组之一为目标。

更新:

我忘了,在您运行 Validate(..) 后,检查 Page.IsValid property - 如果此属性为 == false,则由您来阻止页面提交。

【讨论】:

  • 嗨,我试过了 - 但还是不行。我使用常规的 asp.net 验证器。甚至不是定制的。当我禁用 javascript - 它只是通过,即使我明确使用 Page.Validate();
  • Hmmmmm ...如果您还没有,请尝试重载版本。否则,您从哪个方法或事件调用 Page.Validate?
  • 我因为忘记了 Page.IsValid 而错过了那艘船。
【解决方案2】:

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

HTH

【讨论】:

    【解决方案3】:

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

    请参阅本文中图 2 之后的注释:

    双重检查客户端验证

    有趣的一点是,即使 尽管表单数据在 客户(消除了对 额外的请求和响应 从服务器验证数据), 输入的数据在 服务器。数据核对后 客户端并发现有效,它是 使用相同的方法在服务器上重新检查 验证规则。这些是规则 您建立以确保针对某些 狡猾的程序员试图 绕过验证过程 将页面发布到服务器,就像 它通过了验证。

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

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

    【讨论】:

      【解决方案4】:

      罗马,

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

      【讨论】:

      • 所有 ASP.NET 验证器都提供客户端和服务器端验证 - 不仅仅是 CustomValidator。
      【解决方案5】:

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

      谢谢各位, 罗马

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-26
        • 2017-05-03
        • 1970-01-01
        相关资源
        最近更新 更多