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.第三种略
...............................