【问题标题】:ASP.NET button click event still firing even through custom server-side validation fails即使自定义服务器端验证失败,ASP.NET 按钮单击事件仍会触发
【发布时间】:2010-05-27 18:46:55
【问题描述】:

我遇到了一个问题,即使我的自定义服务器端验证设置为 args.IsValid = false,我的按钮单击事件仍在触发。我正在通过代码进行调试,并且在单击按钮之前肯定会触发验证,并且一旦发生自定义验证,args.IsValid 肯定会设置为 false,但之后它总是会进入按钮单击事件。关于为什么会这样的任何想法?

【问题讨论】:

    标签: asp.net validation


    【解决方案1】:

    不确定 100% 的细节,但为了防止代码继续执行,请添加到您的按钮单击事件处理程序:

    if (!Page.IsValid)
         return;
    

    这将阻止代码执行。

    【讨论】:

    • 啊,是的。完全忘记了那块。
    【解决方案2】:

    在客户端调用 OnClientClick="return SomeCustomClientCode();" 时,asp.net 验证器(例如必填字段验证器)被禁用,它不会在验证器集合中列出,并且不会验证由该验证器验证的字段,如果自定义验证通过,则页面回发...

    为了避免这种情况在自定义验证代码或其他地方显式启用 asp.net 验证器,以便它被激活 b4 页面回发或在自定义验证的开始,如下所示:

    ValidatorEnable(document.getElementById('<%=rfvDDLStatus.ClientID%>'), true);
    

    rfvDDLStatus ==> 未触发的必填字段验证器。

    ValidatorEnable ==> 启用 asp.net 验证器的客户端 API

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 2013-05-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多