
[英]ASP.NET: How to get same validators control to be both client-side and server-side
[英]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>");
如果它在本地工作,但不在服务器上,则需要检查一些事项。 如:
使用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.