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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM