我遇到了一个问题,即使我设置自定义服务器端验证为args.IsValid = false,我的按钮单击事件仍然会触发。我正在通过代码进行调试,验证肯定是在按钮单击之前被触发的,并且一旦完成自定义验证,args.IsValid肯定被设置为false,但它总是在按钮单击事件中执行。有什么想法吗?
我遇到了一个问题,即使我设置自定义服务器端验证为args.IsValid = false,我的按钮单击事件仍然会触发。我正在通过代码进行调试,验证肯定是在按钮单击之前被触发的,并且一旦完成自定义验证,args.IsValid肯定被设置为false,但它总是在按钮单击事件中执行。有什么想法吗?
我不确定所有细节,但是为了防止代码继续执行,请在按钮点击事件处理程序中添加以下内容:
if (!Page.IsValid)
return;
这将防止代码执行。
当调用OnClientClick="return SomeCustomClientCode();"
时,客户端上的asp.net验证器(例如必填字段验证器)将被禁用,并且不会在验证器集合中列出,也不会验证由此验证器验证的字段。如果自定义验证通过,则页面将回传...
为了避免这种情况,在自定义验证代码或其他地方明确启用asp.net验证器,以便在页面回传之前或在自定义验证开始时激活它们,如下所示:
ValidatorEnable(document.getElementById('<%=rfvDDLStatus.ClientID%>'), true);
rfvDDLStatus
==> 未触发的必填字段验证器。
ValidatorEnable
==> 客户端 API,用于启用 asp.net 验证器。