在普通的asp.net环境中,要在页面弹出一个对话框可以用如下代码实现:
response.write("<script>alert('这是一个对话框!')</script>");
然而在ajax环境中如果这样用就要出错了!
这里提供一个标准的使用方法:
private void OpenDialogForButton(Button button, string message)
{
ScriptManager.RegisterClientScriptBlock(
button,
typeof(Button),
DateTime.Now.ToString().Replace(":", " "),
"alert('" + message + "')",
true);
}
ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "click", "alert('发布成功!')", true);
其实这样就可以咯!
在ASP.NET页面上添加AJAX控件后,不能调出窗口的解决办法:
ASP.NET2.0中AJAX使用新的ScriptManager 类来管理,而不兼容原来的 ClientScriptManager 类 ,所以用
<script>alert('弹出提示一下!')</script>和
this.ClientScript.RegisterClientScriptBlock(this.GetType(), "name", "<script>alert('弹出提示一下!');</script>", true);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "name", "<script>alert('弹出提示一下!');</script>", true);
这些方法都是无效的.
可以用以下方法写代码实现
ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "", "alert('弹出提示一下!')", true);
完整事例:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
/// <summary>
/// 在ASP.NET AJAX环境中,为Button控件弹出一个提示对话框
/// </summary>
/// <param name="button">Button控件</param>
/// <param name="message">对话框中的消息</param>
private void OpenDialogForButton(Button button,string message)
{
ScriptManager.RegisterClientScriptBlock(
button,
typeof(Button),
DateTime.Now.ToString().Replace(":"," "), ///使用当前时间作为标识
"alert('" + message + "')",
true);
}
/// <summary>
/// 在ASP.NET AJAX环境中,为Page对象弹出一个提示对话框
/// </summary>
/// <param name="page">Page对象</param>
/// <param name="message">对话框中的消息</param>
private void OpenDialogForPage(Page page,string message)
{
ScriptManager.RegisterClientScriptBlock(
page,
typeof(Page),
DateTime.Now.ToString().Replace(":"," "), ///使用当前时间作为标识
"alert('" + message + "')",
true);
}
protected void Page_Load(object sender,EventArgs e)
{
if(!Page.IsPostBack)
{ ///只有页面第一次启动时,才弹出该对话框
OpenDialogForPage(Page,"这是Page对象弹出的提示对话框");
}
}
protected void btnCommit_Click(object sender,EventArgs e)
{ ///弹出按钮的对话框
OpenDialogForButton((Button)sender,"这是Button按钮弹出的提示对话框");
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>弹出AJAX环境中对话框</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="up" runat="server">
<ContentTemplate>
<asp:Button ID="btnCommit" runat="server" Text="单击我,弹出对话框" OnClick="btnCommit_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>