摘要:[ASP.NET]Response.Write()印出JavaScript alert導致部分CSS失效
發生原因:
ASP.NET 預設採用「http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd」定義
該定義要求在「<!DOCTYPE ... >」的前面不可以以任何的輸出
不過當我們在程式碼中使用 Response.Write() 方法來做輸出時,就會發生違反定義的情況
這時候就會發生 CSS 異常的情形。
解決方法:別使用 Response.Write 來輸出 JavaScript alert 語法
以下列出幾種替代方案:
方法一(使用 Literal 元件):
在頁面裡面拉一個 Literal 元件,並且在需要印出 JavaScript alert 的時候下
Literal.Text = "<script language=\'javascript\'>alert(\'" + “msg” + "\')</script>";
其中 msg 是你要顯示的訊息
或是
Literal AlertMsg = new Literal();
AlertMsg.Text = "<script language=\'javascript\'>alert(\'" + “msg” + "\')</script>";
this.Page.Controls.Add(AlertMsg);
方法二(註冊 Client 的 Head Script):
Page.RegisterClientScriptBlock("AlertMsg", "<script language=\'javascript\'>alert(\'" + msg + "\')</script>");
或是
ClientScript.RegisterClientScriptBlock(this.GetType(), "AlertMsg", "<script language=\'javascript\'>alert(\'" + msg + "\')</script>");
方法三: 寫成「方法」來呼叫
public void MessageBox(string strKey, string strInfo)
{
if (!ClientScript.IsClientScriptBlockRegistered(strKey))
{
string strjs = "alert('" + strInfo + "');";
ClientScript.RegisterClientScriptBlock(this.GetType(), strKey, strjs, true);
}
}
然後在想要的事件中直接呼叫即可:
MessageBox("opsuccess","恭喜,密码修改成功,请记住新密码!");
FM: http://www.cnblogs.com/pengpengsay/archive/2008/01/10/1032934.html
●Yahoo關鍵字廣告/原生廣告
◆Yahoo廣告方案介紹 : https://goo.gl/5k8FHW
◆Yahoo廣告剖析與運用 : http://goo.gl/4xjUJD