即使自定义服务器端验证失败,ASP.NET按钮单击事件仍会触发

即使自定义服务器端验证失败,ASP.NET按钮单击事件仍会触发,asp.net,validation,Asp.net,Validation,我遇到一个问题,即使自定义服务器端验证设置为args.IsValid=false,按钮单击事件仍在触发。我正在调试代码,验证肯定会在单击按钮之前触发,并且args.IsValid肯定会在自定义验证发生后设置为false,但它总是在单击按钮事件发生后进行。关于原因有什么想法吗?不确定100%的细节,但为了防止代码继续,请在按钮单击事件处理程序中添加: if (!Page.IsValid) return; 这将阻止代码执行。在客户端调用OnClientClick=“return Some

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

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

if (!Page.IsValid)
     return;

这将阻止代码执行。

在客户端调用
OnClientClick=“return SomeCustomClientCode();”
时,asp.net验证器(例如必需的字段验证器)已禁用,它不会列在“验证器”集合中,并且不会验证此验证器验证的字段,如果自定义验证通过,则返回页面

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

ValidatorEnable(document.getElementById('<%=rfvDDLStatus.ClientID%>'), true);
ValidatorEnable(document.getElementById(“”),true);
rfvDDLStatus
==>所需的字段验证程序未启动


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

是。我完全忘了那一块。