ASP.NET-回发后CustomValidator不工作
我有一个简单的例子 页面Default.aspx中的自定义验证器ASP.NET-回发后CustomValidator不工作,asp.net,.net,webforms,Asp.net,.net,Webforms,我有一个简单的例子 页面Default.aspx中的自定义验证器 <asp:UpdatePanel ID="UplTab1" runat="server" > <ContentTemplate> <span> <asp:TextBox ID="MyTextBox" runat="server" Width="400px"></asp:TextBox> <
<asp:UpdatePanel ID="UplTab1" runat="server" >
<ContentTemplate>
<span>
<asp:TextBox ID="MyTextBox" runat="server" Width="400px"></asp:TextBox>
<asp:CustomValidator Display="Dynamic" ID="MyValidator" runat="server" ErrorMessage="Mon message" ControlToValidate="MyTextBox" OnServerValidate="MyValidator_OnServerValidate" ValidationGroup="MyGroup1"></asp:CustomValidator>
</span>
<span>
<asp:Button ID="BtnSave" runat="server" Text="Save" ValidationGroup="MyGroup1" OnClick="BtnSave_OnClick"></asp:Button>
</span>
</ContentTemplate>
</asp:UpdatePanel>
当我尝试验证我的textbox控件时,没有问题,我的函数MyValidator\u OnServerValidate被激发。然后我尝试用文本框中相同的按钮和不同的值重新提交表单,但这次我的自定义验证器不再工作了
我的问题是为什么会有这种行为
我认为这是回发行为,因为如果我刷新页面,自定义验证器就会工作。我有完全相同的症状。当您出现javaScript错误时,CustomValidator和UpdatePanel的行为很有趣。这可能是一些无辜的javaScript错误,但它会阻止Ajax请求完成。要测试这一点,请检查您的ajax后端请求是否正确触发
$(function () {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
});
function EndRequestHandler(sender, args) {
alert('Postback!');
}
它会回发吗?显示更多的代码,相关的是在aspx上的文本框,它的所有验证器,任何执行的clientcode,codebehind包括Page_Load和MyValidator_OnServerValidate方法。还可以尝试Display=Static.It在所有验证器工作的情况下第一次回发。第二次它可以发回,但没有验证工作。。。我添加了一些代码,但它是非常基本的示例,不多也不少。。。这就是为什么我觉得这很奇怪!:是否使用验证摘要来显示消息?由于它是服务器端验证程序,请尝试将验证摘要放在更新面板中。
$(function () {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
});
function EndRequestHandler(sender, args) {
alert('Postback!');
}