【问题标题】:modal popup extender not showing panel on button click模态弹出扩展器未在按钮单击时显示面板
【发布时间】:2026-01-06 02:30:02
【问题描述】:

我正在尝试在我的页面上使用模式弹出扩展器,因此当我单击一个按钮时,它必须显示一个面板。这是我所拥有的:

    <asp:UpdatePanel runat="server" ID="updPanel">
    <ContentTemplate>
        <ajaxToolkit:ModalPopupExtender ID="mpeEmailComplete" runat="server" TargetControlID="btnTesting"
            PopupControlID="pnl" OkControlID="btnOk"
             BackgroundCssClass="modalBackground">
        </ajaxToolkit:ModalPopupExtender>



        <asp:Panel ID="pnl" runat="server" style="display:none;">
            <asp:UpdatePanel ID="udp" runat="server">
                <ContentTemplate>
                    <asp:Panel runat="server" ID="pnlEmailComplete" Visible="false">
                        <asp:Label runat="server" ID="lblTest" Text="Testing testing testing"></asp:Label>
                        <asp:Button runat="server" ID="btnOk" Text="OK" />
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>
        </asp:Panel>


        <asp:Button runat="server" ID="btnTesting" Text="Testing"/>

    </ContentTemplate>
</asp:UpdatePanel>

但我无法在单击按钮时弹出面板。有人知道为什么吗?

【问题讨论】:

    标签: asp.net updatepanel ajaxcontroltoolkit modalpopupextender


    【解决方案1】:

    您是否有任何 JavaScript 错误并且pnl.Visible=False; 是否设置在服务器端的任何位置?

    确保您正确引用了AjaxControlToolkitNuGet 是添加引用的最简单方法。

    http://nuget.org/packages/ajaxcontroltoolkit

    【讨论】:

    • 我在那里尝试了不同的东西,它被删除了。无论有没有它都仍然无法工作......
    • 我收到一些 javascript 错误,但 pnl.Visible 没有在任何地方设置
    • javascript 错误:值不能为空。参数名称:处理程序,参数名称相同的错误:元素
    【解决方案2】:
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Button ID="Btnshow" runat="server" Text="Show" OnClick="Btnshow_Click" />
            <asp:Button ID="BtnTarget" runat="server" Text="Target" Style="display: none" />
            <asp:TextBox ID="TextBox1" runat="server">
            </asp:TextBox>
            <input type="button" value="Get" onclick="abc()" />
            <asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="BtnTarget"
                PopupControlID="Panel1">
            </asp:ModalPopupExtender>
            <asp:Panel ID="Panel1" runat="server" BackColor="Black" Width="300px" Height="300px">
                <asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
                    <ContentTemplate>
                        <asp:Button ID="BtnHide" runat="server" Text="Hide Button" OnClick="BtnHide_Click" />
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="BtnHide" EventName="Click" />
                    </Triggers>
                </asp:UpdatePanel>
            </asp:Panel>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Btnshow" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
    

    【讨论】:

    • 也许您可以解释您的答案以及为什么它是解决方案,而不是发布未记录的标记块。谢谢。
    【解决方案3】:

    您最里面的面板有 Visible=false。

    <asp:Panel runat="server" ID="pnlEmailComplete" Visible="false">  *(change here)*
    

    因此,当您按下 TESTING 按钮时,ModalPopupExtender 会正确显示外面板,但它显示的是不可见的内面板,因此您在屏幕上什么也看不到。

    <asp:Panel ID="pnl" runat="server" style="display:none;">  *(this is ok)*
    

    要修复,只需从外部面板中拉出 Visible=false (pnlEmailComplete)

    希望有帮助!

    【讨论】: