ASP.NET生成静态页面
ASP.NET当前页面生成静态页面比较好的方法:
private string File = "重写Render方法生成的静态页面.xml";
//生成静态页面方法Begin=====
protected override void Render(HtmlTextWriter writer)
{
System.IO.StringWriter html = new System.IO.StringWriter();
base.Render(new HtmlTextWriter(html));
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(Server.MapPath(this.File), false, System.Text.Encoding.UTF8))
{
sw.Write(html.ToString());
sw.Close();
//sw = null;//Compiler Error Message: CS1656: Cannot assign to 'sw' because it is a 'using variable'
}
html.Close();
html = null;
HttpContext.Current.Server.Execute(this.File);
}
//生成静态页面方法End=====
protected void Page_PreInit(object sender, EventArgs e)
{
if (System.IO.File.Exists(this.File)) { Server.Transfer(this.File); return; }
}
原理:重写Page类的Render方法,实现在HTML内容生成后,输出前获取到HTML内容并写入到文件,再重定向。