以下代碼正確顯示彈出式窗口,但在彈出窗口中單擊任何按鈕時會拋出錯誤(位於代碼下面)。ModalPopUpExtender在UpdatePanel內部導致PageRequestManagerServerErrorException:無效的回發或回調參數
我無法關閉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">
<asp:Button ID="btn" runat="server" Text="Select" OnClick="btn_Click" /> <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。 – 2011-06-08 15:46:05
問題是我只想讓ViewSearch裏面的內容彈出,如果我把pnlMain放在UpdatePanel ViewCommands外面也會受到影響。我在Page_Load中調用popUpControl.Show(),不確定何時綁定控件,不認爲我手動完成了這一操作。 – 2011-06-09 06:46:07
你不應該在UpdatePanel之外放置'pnlMain'。我的意思是,你應該使用ModalPopupExtender的'PopupControlID'的ID和UpdatePanel之外的擴展器。您可以在需要時爲包括標題欄在內的彈出窗口創建另一個div(如普通窗口),並將其ID用作PopupControlID。 pnlMain等可以留在UpdatePanel中。 – 2011-06-09 06:58:11