【问题标题】:How to prevent PostBack on the client side?如何在客户端防止 PostBack?
【发布时间】:2011-03-02 16:29:51
【问题描述】:

我在客户端有一些验证 JS 代码,必须在 PostBack 之前执行。 如果此验证码返回“false”,则无需回发。 如何禁用它?

【问题讨论】:

    标签: asp.net validation postback


    【解决方案1】:

    请记住,真正的验证应该始终在服务器上进行。您在客户端所做的任何事情都只是为了节省一些 http 往返行程而进行的优化。

    使您的客户端和服务器端验证与 ASP.Net 保持同步的最简单方法是使用验证控件。验证控件将同时进行客户端和服务器端验证,这样如果客户端上的验证失败,它就永远不会发布到服务器。

    如果您想做一些标准验证控件未涵盖的操作,您应该使用 CustomValidator 或从 BaseValidator 继承您自己的控件。

    【讨论】:

      【解决方案2】:

      在您的 ASP 按钮上设置 OnClientClick='YourJSValidationFunction'。

      然后让 YourJSValidationFunction 返回 true 或 false。

      False 会阻止回发

      示例: http://vijaymodi.wordpress.com/2007/06/08/button-onclick-and-onclientclick-2/

      【讨论】:

        【解决方案3】:

        如果回发是由按钮触发的,那么您可以执行以下操作:

        <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return IsValid();" />
        

        如果 IsValid 函数返回 false,则回发将被阻止。 如果您想捕获所有回发而不考虑哪个控件触发它,那么您可以使用
        &lt;form id="form1" runat="server" onsubmit="return IsValid();"&gt;

        【讨论】:

          【解决方案4】:

          你使用什么:一些验证器或一些带有 onclick 事件的按钮? 如果你有

          <input type="button" id="btnID" runat="server" onclick="CheckValid();"/>
          
          function CheckValid()
          {
             if(!IsValid) return false;//then no post back occer
          }
          

          【讨论】:

          • 在这个例子中你可以只返回 IsValid :)
          【解决方案5】:

          根据您尝试的验证,您也可以使用 CustomValidator 控件。这还可以让您轻松地在服务器端实现验证逻辑。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-07-30
            • 1970-01-01
            • 2015-11-22
            • 1970-01-01
            • 2018-05-23
            • 1970-01-01
            • 2020-01-06
            相关资源
            最近更新 更多