1. 程式人生 > 其它 >C# ASP response.write()彈出提示框後頁面佈局被打亂

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

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

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 的輸出會出現在頁面的最頂部

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

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

通常情況不要用response.write,他會打亂你的面向物件模型

用這個來代替:

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

示例:

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>控制元件,把程式碼賦給它也可以。