C# UpdatePanel内部的ModalPopupXtender导致PageRequestManagerServerErrorException:回发或回调参数无效

C# UpdatePanel内部的ModalPopupXtender导致PageRequestManagerServerErrorException:回发或回调参数无效,c#,.net,asp.net,updatepanel,modalpopupextender,C#,.net,Asp.net,Updatepanel,Modalpopupextender,以下代码正确显示弹出窗口,但当单击弹出窗口中的任何按钮时,会抛出一个错误(代码下方的se) 我无法打开EventValidation,因为页面上的其他用途需要它。 如何解决这个问题 <asp:UpdatePanel ID="MainUpdatePanel" runat="server" RenderMode="Inline" UpdateMode="Conditional" ChildrenAsTriggers="false"> <ContentTemplate>

以下代码正确显示弹出窗口,但当单击弹出窗口中的任何按钮时,会抛出一个错误(代码下方的se)

我无法打开EventValidation,因为页面上的其他用途需要它。 如何解决这个问题

<asp:UpdatePanel ID="MainUpdatePanel" runat="server" RenderMode="Inline" UpdateMode="Conditional"
ChildrenAsTriggers="false">
<ContentTemplate>
    <asp:HyperLink ID="link" runat="server"></asp:HyperLink><asp:MultiView ID="MultiViewSearchState"
        runat="server" ActiveViewIndex="0">
        <asp:View ID="ViewCommands" runat="server">
            &nbsp;<asp:Button ID="btn" runat="server" Text="Select" OnClick="btn_Click" />&nbsp;<asp:Button
                ID="ButtonClear" runat="server" Text="Clear" OnClick="ButtonClear_Click" />
        </asp:View>
        <asp:View ID="ViewSearch" runat="server">
            <asp:Panel runat="server" ID="pnlMain" CssClass="modalPopup" EnableViewState="false">
                <asp:Button ID="ButtonCancel" runat="server" Text="Cancel" OnClick="ButtonCancel_Click" />
                <dyncontrols:SearchControl runat="server" ID="searchControl" ExecuteSearch="false" />
            </asp:Panel>
            <input type="hidden" id="popupDummyTarget" runat="server" />
            <ajaxToolkit:ModalPopupExtender ID="popUpControl" runat="server" TargetControlID="popupDummyTarget"
                PopupControlID="pnlMain" BackgroundCssClass="modalBackground">
            </ajaxToolkit:ModalPopupExtender>
        </asp:View>
    </asp:MultiView>
</ContentTemplate>

Internet Explorer调试器中显示的错误:

SCRIPT5022: Sys.WebForms.PageRequestManagerServerErrorException: Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.  If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation. 
SCRIPT5022:Sys.WebForms.PageRequestManagerServerErrorException:回发或回调参数无效。在配置或页面中使用启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合要求,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。

我认为您的
ModalPopupXtender
不需要在您的
UpdatePanel


尝试将其移到外部,看看是否仍然会出现错误。

尝试了该操作后,出现了以下错误:SCRIPT5022:Sys.WebForms.PageRequestManagerServerErrorException:扩展器不能位于与其扩展的控件不同的UpdatePanel中。这是嵌套的UpdatePanel吗?我想是的。pnlMain中的searchControl也有一个UpdatePanel。在回发时绑定控件后,是否调用
popUpControl.Show()
?我还认为(正如Town所做的那样)没有必要将扩展器放入UpdatePanel中。您只需确保您的
pnlMain
也在UpdatePanel之外。只将内容(不带弹出控件本身)放入UpdatePanel。问题是,我只希望ViewSearch中的内容弹出,如果我将pnlMain置于UpdatePanel Views之外,命令也会受到影响。我在Page_Load中调用popUpControl.Show(),不确定绑定控件的时间,请不要认为我是手动完成的。您不应该将
pnlMain
放在UpdatePanel之外。我的意思是,您应该将ID为ModalPoppeXtender的
PopupControlID的控件和扩展器本身放在UpdatePanel之外。您可以在需要时为弹出窗口创建另一个div,包括标题栏(如普通窗口),并将其ID用作PopupControlID。pnlMain等可以保留在更新面板中。