本專案採 DNN 風格單頁面架構,最佳實作為覆寫 Render 方法。
protected override void Render(HtmlTextWriter writer)
{
if (HttpContext.Current.Items.Contains("createstaticfile"))
{
string file = (string)HttpContext.Current.Items["createstaticfile"];
using (System.IO.StringWriter html = new System.IO.StringWriter())
{
using (HtmlTextWriter tw = new HtmlTextWriter(html))
{
base.Render(tw); // 正常渲染至 StringWriter
Response.Write(html); // 輸出給瀏覽器
StaticFile.CreateHtml(file, html.ToString(), Response.ContentEncoding); // 存檔
}
}
}
else
{
base.Render(writer); // 正常流程
}
}
HttpContext.Items 傳遞「需靜態化」訊號與檔案路徑。StringWriter 捕獲完整 HTML 輸出。StaticFile.CreateHtml。