ASP.NET-回发后CustomValidator不工作

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> <

我有一个简单的例子

页面Default.aspx中的自定义验证器

<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!');
}