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

The error as shown in the Internet Explorer debugger:

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. 

person Soroush Hakami    schedule 08.06.2011    source источник
comment
Вы звоните popUpControl.Show() после того, как связали свой контроль над обратной передачей? Я также считаю (как и Town), что нет необходимости помещать расширитель в UpdatePanel. Вам нужно только убедиться, что ваш pnlMain тоже находится за пределами UpdatePanel. Поместите только контент (без самого всплывающего элемента управления) в UpdatePanel.   -  person Tim Schmelter    schedule 08.06.2011
comment
Проблема в том, что мне нужно только содержимое внутри ViewSearch для всплывающего окна, если я помещу pnlMain вне UpdatePanel ViewCommands, это также повлияет. Я вызываю popUpControl.Show () в Page_Load, не уверен, когда я привязываю элемент управления, не думаю, что я сделал это вручную.   -  person Soroush Hakami    schedule 09.06.2011
comment
не следует помещать pnlMain за пределы UpdatePanel. Я имел в виду, что вы должны поместить элемент управления с идентификатором PopupControlID ModalPopupExtender и сам расширитель вне UpdatePanel. Вы можете создать еще один div для всплывающего окна, включая строку заголовка, когда это необходимо (как в обычном окне), и использовать его идентификатор как PopupControlID. PnlMain и т. Д. Могут остаться в UpdatePanel.   -  person Tim Schmelter    schedule 09.06.2011


Ответы (1)


Я бы не подумал, что ваш ModalPopupExtender должен быть внутри вашего UpdatePanel.

Попробуйте переместить его на улицу и посмотрите, сохраняется ли ошибка.

person Town    schedule 08.06.2011
comment
Пробовал это и получил эту ошибку: SCRIPT5022: Sys.WebForms.PageRequestManagerServerErrorException: расширитель не может находиться в другой UpdatePanel, чем элемент управления, который он расширяет. - person Soroush Hakami; 08.06.2011
comment
Это вложенная панель обновления? - person Town; 08.06.2011
comment
Я думаю, что да. SearchControl внутри pnlMain также имеет UpdatePanel. - person Soroush Hakami; 08.06.2011