繁体   English   中英

如何让服务器端的ASP页面在客户端的浏览器中显示弹出消息?

[英]How to get a server-side ASP page to display a pop-up message in the client's browser?

好。 我已经阅读了几十篇关于你无法从服务器端ASP页面使用MessageBox.Show的文章。 说得通。 这些文章主张使用“警告”来弹出消息(如确认消息,用户必须单击“确定”以确认消息)。 一些帖子谈到了注册代码,但其他人没有。 我已经尝试了所有可以找到的组合,但是仍然无法让我的服务器端ASP页面在我的客户端浏览器中弹出消息!

这是我的代码隐藏页面中的代码片段:

private void MessageBoxShow(Page page, string message)
{
    Literal ltr = new Literal();
    ltr.Text = @"<script type='text/javascript'> alert('" + message + "') </script>";
    page.Controls.Add(ltr);
}

我也尝试过这种变化:

protected void MyTrace(string msg)
{
    Response.Write("<script>alert('" + msg + "')</script>");
}

如果我要访问localhost,这两个工作都按预期工作,但是当我将代码放在服务器上时(在IIS 7.5下),消息永远不会出现。

有人可以给我一个简单(但完整)的答案吗? 谢谢。

我觉得警报箱很烦人。 只需使用HTML创建自己的:

<div runat="server" id="AlertBox" class="alertBox" Visible="false">
    <div runat="server" id="AlertBoxMessage"></div>
    <button onclick="closeAlert.call(this, event)">Ok</button>
</div>

在代码中显示:

private void MessageBoxShow(string message)
{
    this.AlertBoxMessage.InnerText = message;
    this.AlertBox.Visible = true;
}

添加一些CSS以将其设置为弹出窗口,并添加一些JavaScript以在单击“确定”时关闭它。 这是一个完整的演示:

<%@ Page Language="C#" CodeFile="Demo.aspx.cs" Inherits="Demo" %>
<!doctype html>
<html>
    <head runat="server">
        <meta charset="UTF-8" />
        <title>Message Box Demo</title>
        <style type="text/css">
            .alertBox
            {
                position: absolute;
                top: 100px;
                left: 50%;
                width: 500px;
                margin-left: -250px;
                background-color: #fff;
                border: 1px solid #ccc;
                border-radius: 4px;
                box-sizing: border-box;
                padding: 4px 8px;
            }
        </style>
        <script type="text/javascript">
            function closeAlert(e)
            {
                e.preventDefault();
                this.parentNode.style.display = "none";
            }
        </script>
    </head>
    <body>
        <form runat="server">
            <div>
                [Regular page content here]
            </div>
            <div runat="server" id="AlertBox" class="alertBox" Visible="false">
                <div runat="server" id="AlertBoxMessage"></div>
                <button onclick="closeAlert.call(this, event)">Ok</button>
            </div>
        </form>
    </body>
</html>
using System;
using System.Web.UI;

public partial class MessageBoxDemo : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        MessageBoxShow("Welcome to my website!");
    }

    private void MessageBoxShow(string message)
    {
        this.AlertBoxMessage.InnerText = message;
        this.AlertBox.Visible = true;
    }
}

感谢大家的投入。 事实证明,大多数想法都是可行的。 我的问题是没有意识到警报框在方法完成之后才弹出(事后才有意义)。 我最终使用了最简单的想法,即,

Response.Write("<script>alert('" + msg + "')</script>");

如果它在本地工作,但不在服务器上,则需要检查一些事项。 如:

  1. 您的浏览器是否缓存了该页面? 在页面上进行硬刷新( ctrl + F5 )并再试一次。
  2. 您确定已部署代码吗? 看起来像傻事,但我们不得不问。 随之而来的是一个跟进:你确定代码部署到了正确的位置吗?
  3. 你有javascript错误吗?

使用ClientScriptManager.RegisterStartupScript注册启动脚本。 请参阅此MSDN文档http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx

我更喜欢用

Page.ClientScript.RegisterStartupScript(GetType(String), "myScript", "alert('" & s.Replace("'", "'+String.fromCharCode(39)+'") & "')", True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM