Ajax中Response.Write輸出js指令碼出錯的解決方案
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 + "');網頁特效: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);
}
}
}