C# ASP response.write()彈出提示框後頁面佈局被打亂

發如今使用了response.write後樣式發生了變化,位置和字體都不正確。Response.Write("<script>alert(')</script>")這種用法也是這樣,2003中沒有這種狀況,很不明白,恰巧看到了csdn上的一個帖子也是討論這個問題的,其中提到緣由有:html

ASP.NET 2.0裏默認使用<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">文檔定義模型,這個dtd的規則與之前的不一樣,所以,許多之前寫的代碼在新標準下沒法正常運行。前端

Response.Write 表示在當前輸出流位置寫入數據佈局

ASP.NET 中不要隨便使用 Response.Write,會打亂 ASP.NET 的輸出流順序字體

在 .aspx.cs 中使用 Response.Write 的輸出會出如今頁面的最頂部this

會致使頁面佈局得不到預期效果spa

Response.Write(@"<script language=JavaScript>{window.alert('驗證碼輸入不正確!');}</script>");server

一般狀況不要用response.write,他會打亂你的面向對象模型htm

用這個來代替:對象

Page.ClientScript.RegisterStartupScript(this.GetType(),"alert","<script>alert('保存成功');</script>");ip

示例:

Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('添加成功!');window.location.href='EqpInfo.aspx';</script>");

後言:因爲div是流佈局,response.write()輸出得內容老是在頁面得最前端,打破了原有得流佈局,因此會形成樣式改變,可是還有疑問得是爲何字體也會改變還不清楚

另外一種解決辦法:

在頁面中加一個<asp:Literal ID="Literal1" runat="server"></asp:Literal>控件,把代碼賦給它也能夠。

相關文章
相關標籤/搜索