在 ASP.NET 後台 Response.Write("") 導致原頁面空白,主因有二:iframe 非空標籤必須有閉合標籤、Response.Write 輸出位置在 之前導致瀏覽器進入怪異模式。
Response.Write(""); // 自閉合寫法無效,且輸出在最頂端
Response.Write("
在 .aspx 頁面直接寫標籤,避免輸出位置問題:
<%-- 頁面適當位置 --%>
<iframe src="report.html" style="width:100%; height:500px; border:none;"></iframe>
或用伺服器端控制項:
<iframe src="report.html" runat="server" id="ifrReport"></iframe>
// 後台
ifrReport.Attributes["src"] = "report.html";
<asp:Literal ID="litIframe" runat="server" />
// 後台
litIframe.Text = "<iframe src='report.html'></iframe>";
Response.Write 在頁面生命週期Render 階段之前輸出,內容會插在 <!DOCTYPE html> 之前,導致瀏覽器以 Quirks Mode 解析,排版崩潰。iframe 在 HTML5 中禁止自閉合(<iframe />),必須寫 <iframe></iframe>。runat="server" 控制項或前端 JS 設定 src。Literal、PlaceHolder 或繫結控制項。Page_Load 之前或 Response.Write 直接輸出 HTML 片段。遵循 ASP.NET WebForms 頁面生命週期與控制項模型,能避免此類輸出位置與標籤語法錯誤。