Search code examples
asp.netmodalpopupextenderlinkbutton

ASP.Net: Control MainPage from iframe in ModalPopupExtander


I have a page "Default.aspx". In this page is a ModalPopupControl with an iFrame:

 <div style="float: right; margin-right: 10px; margin-top: 8px;">
                        <asp:Button ID="btnSearchGo" runat="server" Text="Jetzt suchen" OnClick="btnSearchGo_Click" />
                    </div>
                    <asp:ModalPopupExtender BackgroundCssClass="ModalPopupBG" OkControlID="linkClosestartSeach"
                        PopupDragHandleControlID="PopupHeader" ID="mpeMiniSearch" runat="server" TargetControlID="linkFooterImpressum"
                        PopupControlID="panMiniSearch">
                    </asp:ModalPopupExtender>
                    <asp:Panel Style="display: none" ID="panMiniSearch" runat="server">
                        <div class="HellowWorldPopup">
                            <div class="PopupHeader" id="Div10">
                                Suche</div>
                            <div class="PopupBody">
                                <iframe id="iFrameMiniSearch" runat="server" src="MiniSearch.aspx" class="iFramePopUp">
                                </iframe>
                            </div>
                            <div class="popupFooter">
                                <asp:LinkButton Text="Schließen" class="linkPupopClose" runat="server" ID="linkClosestartSeach"></asp:LinkButton>
                            </div>
                        </div>
                    </asp:Panel>



 protected void btnSearchGo_Click(object sender, EventArgs e)
    {
        iFrameMiniSearch.Attributes["src"] = "MiniSearch.aspx";
   //Do More
        mpeMiniSearch.Show();
    }

Now I have a LinkButton in the iFrame that should close the MPE and redirect the Page Default.aspx to Register.aspx.

Any Idea how to do?


Solution

  • First, you'll need to specify a BehaviorID for your ModalPopupExtender, so you can access it from the client side. That property defaults to the ClientID of the extender, which will vary depending on the container chain, so it's best to specify it explicitly:

    <asp:ModalPopupExtender ID="mpeMiniSearch" runat="server"
        BehaviorID="mpeMiniSearch" BackgroundCssClass="ModalPopupBG"
        OkControlID="linkClosestartSeach" PopupDragHandleControlID="PopupHeader"
        TargetControlID="linkFooterImpressum" PopupControlID="panMiniSearch">
    </asp:ModalPopupExtender>
    

    Then, you can call $find() from your LinkButton's ClientClick event:

    function yourLinkButton_clientClick()
    {
        var modalPopup = window.parent.$find("mpeMiniSearch");
        if (modalPopup != null) {
            modalPopup.hide();
            window.parent.location.href = "Register.aspx";
        }
    }