“验证阻止”复选框将自动回发

Validation prevent check box to auto postback

本文关键字:复选框 验证 验证阻止      更新时间:2023-09-26

我的页面上有以下复选框:

<asp:CheckBox ID="rbBuilding" runat="server" AutoPostBack="True" OnCheckedChanged="HandlerPackageOnCheckedChanged" Checked="True" CausesValidation="False"   />
<asp:CheckBox ID="rbContent" runat="server" AutoPostBack="True" OnCheckedChanged="HandlerPackageOnCheckedChanged" CausesValidation="False" />

有一种基于所单击复选框组合的回发逻辑。除了一种情况外,一切都很好:

我正在打开额外的telerik radwindow,它在自己的验证小组中进行了一些验证。如果我关闭窗口时出现任何验证错误,那么第一次单击任何复选框不做postpack。

只有第一次点击不起作用。下次我点击时,一切都很好。我尝试将复选框添加到他们自己的验证组中,并将大小写验证更改为true。但行为是完全一样的。当我将测试javascript方法添加到该复选框的onclick中时,该方法将被激发而不会出现问题。只是没有回邮。

我还试图在窗口关闭时重置窗口验证组的所有验证器,它们被重置了,但行为没有得到检查,第一次点击也不起作用。

更新

我又做了一次检查,意识到只有在javascript:中进行检查时才会发生这种情况

window.Page_ClientValidate("MyGroup")

这是我在弹出窗口上做一些计算之前必须做的。在动态验证器期间,当更新可验证控件时,即使验证失败,每个控件都能正常工作。所以问题是*Page_ClientValidate*

我知道这是一个老问题,但我遇到了几乎完全正确的问题,多亏了以下链接,我得以解决问题:

问题是回发和点击控件两次

最后,我在代码后面添加了这段代码,为复选框的点击事件添加了一个javascript事件处理程序:

Checkbox1.Attributes.Add("onclick", "checkboxChanged();");

然后我添加了以下javascript:

function checkboxChanged(arg1) {
  Page_BlockSubmit = false;
}

在我的情况下,复选框也被设置为CausesValidation设置为false,但我认为这不是这个修复所必需的。希望这能帮助到别人。