在AjaxToolkit的 ModalPopupExtender上显示消息时出现问题

前端开发 2026-07-09

当我在ajaxToolkit:ModalPopupExtender内部显示消息时,消息关闭后,ajaxToolkit:ModalPopupExtender会关闭。

如何在显示ajaxToolkit:ModalPopupExtender的同时仍然显示消息,并且消息关闭时不让ajaxToolkit:ModalPopupExtender关闭?

标记:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<%@ Register Assembly="CrystalDecisions.Web, Version=13.0.4000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" Namespace="CrystalDecisions.Web" TagPrefix="CR" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>


<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Tests</title>
<link href="../Style_Sheet/Stylesheet1.css" rel="stylesheet" type="text/css" />
<style>
</style>
<script>
</script>

</head>
<body>

    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <div>
        <asp:Label ID="lbModal_Response_Display" runat="server" Text=""></asp:Label>

        <!-- ModalPopupExtender Panel Like Browser -->

        <asp:Button ID="btnMPE_Example_Panel_Like_Browser" runat="server" Text="Display Panel Like Browser In A Modal Popup Extender"  />        
        <!-- Modal Popup Panel -->
        <asp:Panel ID="pnlMPE_Example_Panel_Like_Browser" style="border: 2px solid #ccc; width: 780px; height:950px;" runat="server" BackColor="#666666">    
            <!-- Title Bar & Controls -->
            <asp:Panel ID="pnlMPE_Example_Panel_Like_Browser_Header" runat="server" >
                <div > 
                </div>
            </asp:Panel>

            <!-- Main Content -->
            <asp:Panel ID="pnlMPE_Example_Panel_Like_Browser_Content" runat="server" style="height:945px;" BackColor="White">
                <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"/>

            </asp:Panel>    
        </asp:Panel>


        <!-- ModalPopupExtender Control -->
        <ajaxToolkit:ModalPopupExtender ID="MPE_Example_Panel_Like_Browser" runat="server"
            TargetControlID="btnMPE_Example_Panel_Like_Browser"
            PopupControlID="pnlMPE_Example_Panel_Like_Browser"
            BackgroundCssClass="modalBackground"
            BehaviorID="mpe_bhid2">
        </ajaxToolkit:ModalPopupExtender>


        <!-- ModalPopupExtender_Panel Like Browser -->

    </form>
</body>

</html>

后台代码:

using AjaxControlToolkit;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {

        #region Modal Popup Example Panel Like Browser.
        protected void btnMPE_Example_Panel_Like_Browser_Close_Click(object sender, EventArgs e)
        {
            // DONT SET THE CANCELCONTROLID on the ModalPopupExtender
            // Set the CausesValidation = false on btnModal_Popup_No 
            // for this event to be fired
            MPE_Example_Panel_Like_Browser.Hide();
            lbModal_Response_Display.Text = "Modal Popup Example Panel Like Browser - Close";
        }
        #endregion Modal Popup Example Panel Like Browser.

        protected void btnMPE_Example_Panel_Like_Browser_Message_Click(object sender, EventArgs e)
        {
            Response.Write("<script>alert('Message')</script>");
        }


    }
}

解决方案

我在面板上有一个按钮,点击后会显示一条消息。当点击消息时,消息和ModalPopupExtender都会关闭。如何阻止ModalPopupExtender关闭?

我理解上文中的“按钮”指的是 <asp:Button ID="btnMPE_Example_Panel_Like_Browser_Message" ... />,而“消息”指的是弹出消息对话框中的确定按钮(OK)

你需要按如下方式以编程方式显示ModalPopup:

protected void btnMPE_Example_Panel_Like_Browser_Message_Click(object sender, EventArgs e)
{
    Response.Write("<script>alert('Message')</script>");
    pnlMPE_Example_Panel_Like_Browser.Show();
}

请注意,点击ASP.NET Web Forms的 Button控件会触发回发(postback)并提交表单。因此,浏览器向服务器发送请求,服务器返回响应,浏览器使用服务器返回的响应重新绘制页面,除非你再次显示它,否则该页面上不会显示ModalPopup。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章