新建两个类:
1. FreezablePage:它继承自 System.Web.UI.Page。这个类用于重写Render方法,获取页面的htm输出。
2. MyHtmlFileCreator:利用FreezablePage输出的HtmlTextWriter型对象,写入新生成的htm静态文件。
base.Render(htmlFile.RenderHere);这里之所以没有用“protected override void Render(HtmlTextWriter writer)”的writer,是因为最后生成静态页是在MyHtmlFileCreator里执行的。因此为了方便后面使用,在htmlFile新添了一个属性RenderHere包装了htmlWriter字段。执行Render后将页面的htm输出就写入了htmlFile的htmlWriter字段。
说明一下:在htmlWriter = new HtmlTextWriter(html);的时候,本来参数应该是一个TextWriter型的,但是TextWriter是抽象类不能有实例化,因此使用了一个实现了它的类StringWriter来构造这个HtmlTextWriter。