【发布时间】:2010-05-27 18:46:55
【问题描述】:
我遇到了一个问题,即使我的自定义服务器端验证设置为 args.IsValid = false,我的按钮单击事件仍在触发。我正在通过代码进行调试,并且在单击按钮之前肯定会触发验证,并且一旦发生自定义验证,args.IsValid 肯定会设置为 false,但之后它总是会进入按钮单击事件。关于为什么会这样的任何想法?
【问题讨论】:
标签: asp.net validation
我遇到了一个问题,即使我的自定义服务器端验证设置为 args.IsValid = false,我的按钮单击事件仍在触发。我正在通过代码进行调试,并且在单击按钮之前肯定会触发验证,并且一旦发生自定义验证,args.IsValid 肯定会设置为 false,但之后它总是会进入按钮单击事件。关于为什么会这样的任何想法?
【问题讨论】:
标签: asp.net validation
不确定 100% 的细节,但为了防止代码继续执行,请添加到您的按钮单击事件处理程序:
if (!Page.IsValid)
return;
这将阻止代码执行。
【讨论】:
在客户端调用 OnClientClick="return SomeCustomClientCode();" 时,asp.net 验证器(例如必填字段验证器)被禁用,它不会在验证器集合中列出,并且不会验证由该验证器验证的字段,如果自定义验证通过,则页面回发...
为了避免这种情况在自定义验证代码或其他地方显式启用 asp.net 验证器,以便它被激活 b4 页面回发或在自定义验证的开始,如下所示:
ValidatorEnable(document.getElementById('<%=rfvDDLStatus.ClientID%>'), true);
rfvDDLStatus ==> 未触发的必填字段验证器。
ValidatorEnable ==> 启用 asp.net 验证器的客户端 API
【讨论】: