You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ajaxToolkit:ModalPopupExtender内显示消息且弹窗不关闭

解决ModalPopupExtender弹窗随alert关闭消失的问题

问题根源:点击弹窗内的Message按钮会触发整页回发,回发完成后原ModalPopup的状态未保留,导致alert关闭后弹窗无法维持显示。

以下是三种可行解决方案:


方案一:客户端直接触发alert(无回发,最简单)

修改前台的Message按钮,添加客户端点击事件并阻止回发:

<asp:Button ID="btnMPE_Example_Panel_Like_Browser_Message" runat="server" 
    Text="Message" CausesValidation="false" 
    OnClientClick="alert('Message'); return false;" />
  • 点击按钮仅触发客户端alert,不会向服务器发送请求,弹窗全程保持显示。

方案二:后台注册脚本+回发后重新显示弹窗

若需在服务器端处理逻辑后再显示消息,用ScriptManager.RegisterStartupScript替代Response.Write,同时重新唤起弹窗:
修改后台代码的btnMPE_Example_Panel_Like_Browser_Message_Click方法:

protected void btnMPE_Example_Panel_Like_Browser_Message_Click(object sender, EventArgs e)
{
    // 先弹出alert,再通过BehaviorID获取弹窗对象并重新显示
    string script = "alert('Message'); $find('mpe_bhid2').show();";
    ScriptManager.RegisterStartupScript(this, GetType(), "ShowMessage", script, true);
}
  • $find('mpe_bhid2')对应ModalPopupExtender的BehaviorID="mpe_bhid2",确保能正确获取客户端弹窗实例。

方案三:局部刷新(UpdatePanel)

将弹窗内的交互内容包裹在UpdatePanel中,实现局部回发,避免整页刷新导致弹窗消失:

前台修改:

<asp:Panel ID="pnlMPE_Example_Panel_Like_Browser_Content" runat="server" style="height:945px;" BackColor="White">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <h3>We are restricted to the Browser Height/Width</h3>
            <p>This panel acts as an inner browser window.</p>

            <asp:Label ID="lbMPE_Example_Panel_Like_Browser_Saved" runat="server" Text=""></asp:Label>
            <asp:Button ID="btnMPE_Example_Panel_Like_Browser_Close" runat="server" 
                Text="Close" onclick="btnMPE_Example_Panel_Like_Browser_Close_Click" 
                CausesValidation="false"/>
            <asp:Button ID="btnMPE_Example_Panel_Like_Browser_Message" runat="server" 
                Text="Message" CausesValidation="false" 
                onclick="btnMPE_Example_Panel_Like_Browser_Message_Click"/>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Panel>

后台修改:

protected void btnMPE_Example_Panel_Like_Browser_Message_Click(object sender, EventArgs e)
{
    // 向UpdatePanel注册alert脚本,仅局部刷新
    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), 
        "ShowMessage", "alert('Message');", true);
}
  • 局部刷新不会影响弹窗的显示状态,alert关闭后弹窗依然保留。

内容的提问来源于stack exchange,提问作者Yuppski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 20:34:53