ASP.Net页面弹出消息框总结

在设计asp.net web时,我们有时需要弹出消息框来提示用户信息,通常可采用下面几种方式:
方式一

aspx代码

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script type="text/javascript">
        function showAlert() {
            alert('这是一个动态弹出的消息框!');
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
          <div>
              page1
              <asp:Button ID="btnCreate" runat="server" Text="新建"   OnClientClick="showAlert();" />  
          </div>
            
    </form>
</body>
</html>

无需后台任何代码,点击按钮即可弹出消息框。

方式二

aspx代码

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">        
       <div>
          page1
          <asp:Button ID="btnCreate" runat="server" Text="新建"  OnClick="btnCreate_Click" />  
           </div>            
    </form>
</body>
</html>

后台代码:
 

protected void btnCreate_Click(object sender, EventArgs e)
        {
            script = "alert('这是一个弹出消息框!');";
            Page.ClientScript.RegisterStartupScript(this.GetType(), "MessageScript", script, true);

        }

点击按钮能正常弹出消息框。

方式三

aspx代码

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <div>
                    page1
                    <asp:Button ID="btnCreate" runat="server" Text="新建"  OnClick="btnCreate_Click" />  
                </div>
            </ContentTemplate>
        </asp:UpdatePanel>
        
    </form>
</body>
</html>

后台代码:
 

protected void btnCreate_Click(object sender, EventArgs e)
        {
            string script = "alert('这是一个弹出消息框!');";            

            ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "Key", "alert('Hello World');", true);

        }

点击按钮正常弹出消息框。

请注意方式二和方式三的区别,如果按钮放在<asp:UpdatePanel>内仍使用Page.ClientScript.RegisterStartupScript则不会弹出消息框,原因分析如下:
 

原始代码

1<body>
2    <form id="form1" runat="server">
3        <div>
4            page1
5            <asp:Button ID="btnCreate" runat="server" Text="新建" OnClick="btnCreate_Click" />
6        </div>
7    </form>
8</body>

在这个例子中,btnCreate_Click事件会触发一个完整的页面回发(postback)。这意味着服务器端的btnCreate_Click方法会被调用,整个页面会被重新加载,所有服务器控件的状态都会被重置。

如果在btnCreate_Click方法中注册了一个客户端脚本来显示一个消息框(比如使用Page.ClientScript.RegisterStartupScript),那么这个脚本会在页面加载完成后被执行。因为这是一个完整的页面回发,所以脚本应该能够正常运行并弹出消息框。

修改后的代码

1<body>
2    <form id="form1" runat="server">
3        <asp:ScriptManager ID="ScriptManager1" runat="server" />
4        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
5            <ContentTemplate>
6                <div>
7                    page1
8                    <asp:Button ID="btnCreate" runat="server" Text="新建" OnClick="btnCreate_Click" />
9                </div>
10            </ContentTemplate>
11        </asp:UpdatePanel>
12    </form>
13</body>

在这个例子中,UpdatePanel被用来包裹按钮和相关的内容。当btnCreate_Click被触发时,只有UpdatePanel内的内容会刷新,而不是整个页面。因此,服务器端的btnCreate_Click方法会被调用,但只有UpdatePanel内部的内容会被更新。

如果在btnCreate_Click方法中注册了一个客户端脚本来显示一个消息框,那么这个脚本会在异步请求完成时被执行。问题是,这个脚本可能不会像预期那样运行,因为异步请求的生命周期不同于完整页面回发的生命周期。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值