1.第一種方法
public static string fileName;
protected override void Render(HtmlTextWriter writer)
{
StringWriter html = new StringWriter();
HtmlTextWriter tw = new HtmlTextWriter(html);
base.Render(tw);
StreamWriter sw = new StreamWriter(Server.MapPath(DefalutPage.fileName), false, System.Text.Encoding.GetEncoding("gb2312"));
sw.Write(html.ToString());
sw.Flush();
sw.Close();
tw.Close();
Response.Write(html.ToString());
}
需要實現靜態的頁面繼承它即可,並給定生成靜態頁面的路徑。
2.第二種方法
public static string fileName; //生成靜態頁的路徑
//控件呈現之前
protected override void OnPreRender(EventArgs e)
{
StringWriter html = new StringWriter();
HtmlTextWriter tw = new HtmlTextWriter(html); //html:要被生成的頁面
base.Render(tw);
StreamWriter sw = new StreamWriter(Server.MapPath("/html/" + Static.fileName), false, System.Text.Encoding.GetEncoding("gb2312"));
sw.Write(html.ToString());
sw.Flush();
sw.Close();
tw.Close();
Response.Write(html.ToString());
Static.fileName = Static.fileName.Substring(Static.fileName.LastIndexOf('\\') + 1);
}
//呈現到客服端
protected override void Render(HtmlTextWriter writer)
{
Response.Redirect("/html/" + Static.fileName);
Response.End();
}
3.第三種略
...............................