【问题标题】:ModalPopUpExtender inside UpdatePanel causing PageRequestManagerServerErrorException: Invalid postback or callback argumentUpdatePanel 中的 ModalPopUpExtender 导致 PageRequestManagerServerErrorException:回发或回调参数无效
【发布时间】:2011-06-08 13:46:10
【问题描述】:

以下代码正确显示弹出窗口,但是当单击弹出窗口中的任何按钮时,会引发错误(代码下方)。

我无法打开 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. 

【问题讨论】:

  • 您在回发绑定控件后是否调用popUpControl.Show()?我也认为(正如 Town 所做的那样)没有必要将扩展器放入 UpdatePanel。您只需确保您的 pnlMain 也在 UpdatePanel 之外。仅将内容(不包括弹出控件本身)放入 UpdatePanel。
  • 问题是我只希望 ViewSearch 中的内容弹出,如果我将 pnlMain 放在 UpdatePanel 之外 ViewCommands 也会受到影响。我在Page_Load中调用popUpControl.Show(),不知道什么时候绑定控件,别以为我是手动完成的。
  • 您不应该将pnlMain 放在更新面板之外。我的意思是,您应该将控件与 ModalPopupExtender 的PopupControlID 的 ID 和扩展器本身放在 UpdatePanel 之外。您可以在需要时(如普通窗口)为弹出窗口创建另一个 div,包括标题栏,并将其 ID 用作 PopupControlID。 pnlMain 等可以保留在 UpdatePanel 中。

标签: c# .net asp.net updatepanel modalpopupextender


【解决方案1】:

我认为您的 ModalPopupExtender 不需要在您的 UpdatePanel 中。

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

【讨论】:

  • 试过了,得到了这个错误:SCRIPT5022: Sys.WebForms.PageRequestManagerServerErrorException: 扩展器不能位于与其扩展的控件不同的 UpdatePanel 中。
  • 这是一个嵌套的更新面板吗?
  • 我想是的,是的。 pnlMain 中的 searchControl 也有一个 UpdatePanel。
猜你喜欢
  • 2015-11-28
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
相关资源
最近更新 更多