這一段時間在使用Ajax將老ASP.NET程式升級為Ajax程式,在升級中發現先前頁面中使用Response.Write("<script>alert('資料添加成功!')</script>")的代碼執行時出錯.上網上尋找解決辦法,網上大部分的解決語句是改為 ScriptManager.RegisterStartupScript(updatePanel1, typeof(UpdatePanel), "aaa", "<script>alert('資料添加成功!')</script>",true);包括陳黎夫著的<<ASP.NET AJAX>>中P104頁中解決方案.
因為我們現在使用Visual Studio 2008 Beta2中的Ajax(3.5),我在使用上述的語句進行處理時,系統並沒有預期的指令碼運行來跳出對話方塊,不知是不是Ajax 3.5是不是有改動.後來經過嘗試將ScriptManager.RegisterStartupScript(updatePanel1, typeof(UpdatePanel), "aaa", "<script>alert('資料添加成功!')</script>",true);中最後的true變為ScriptManager.RegisterStartupScript(updatePanel1, typeof(UpdatePanel), "aaa", "<script>alert('資料添加成功!')</script>",false);就可以了.下面寫一個通用的訊息提示類.
public class MessageBox
{
private HttpContext myContext = null;
public MessageBox(HttpContext CurrentContext)
{
myContext = CurrentContext;
}
/// <summary>
/// 自訂快顯視窗內容
/// </summary>
/// <param name="msg"></param>
public void Show(string msg)
{
//myContext.Response.Write("<script>alert('" + msg + "');</script>");
ScriptManager.RegisterStartupScript((System.Web.UI.Page)myContext.CurrentHandler, typeof(System.Web.UI.Page), "aaa", "<script>alert('" + msg + "');</script>", false);
}
/// <summary>
/// 自訂快顯視窗內容並轉向一個新的頁面
/// </summary>
/// <param name="msg">自訂訊息</param>
/// <param name="Url">需要轉到的新頁面</param>
public void Show(string msg,string Url)
{
//myContext.Response.Write("<script>alert('" + msg + "');javascript:location='"+Url+"';</script>");
ScriptManager.RegisterStartupScript((System.Web.UI.Page)myContext.CurrentHandler, typeof(System.Web.UI.Page), "aaa", "<script>alert('" + msg + "');javascript:location='" + Url + "';</script>", false);
}
/// <summary>
/// 自訂快顯視窗內容,自訂是否關閉當前頁面
/// </summary>
/// <param name="msg"></param>
/// <param name="close"></param>
public void Show(string msg, bool close)
{
if (close)
{
// myContext.Response.Write("<script>alert('" + msg + "');javascript:window.close();</script>");
ScriptManager.RegisterStartupScript((System.Web.UI.Page)myContext.CurrentHandler, typeof(System.Web.UI.Page), "aaa", "<script>alert('" + msg + "');javascript:window.close();</script>", false);
}
else
{
//myContext.Response.Write("<script>alert('" + msg + "');</script>");
ScriptManager.RegisterStartupScript((System.Web.UI.Page)myContext.CurrentHandler, typeof(System.Web.UI.Page), "aaa", "<script>alert('" + msg + "');javascript:window.close();</script>", false);
}
}
}