大家在了解了asp.net页面的生命周期后,可能会有这样的一个想法,能不能在html输出时,服务端截取要输出的html呢,在网上查了很多资料也没找到答案,还是在一位高人的指点下,终于知道怎么做了,拿出来跟大家分享一下。
大家都知道,页面的生命周期中,最后一个阶段是呈现,执行Render事件。
所以可以重写这个方法
protected override void Render(HtmlTextWriter writer)
{
//base.Render(writer);
System.IO.MemoryStream mem = new System.IO.MemoryStream();
System.IO.StreamWriter twr = new System.IO.StreamWriter(mem);
System.Web.UI.HtmlTextWriter myWriter = new HtmlTextWriter(twr);
base.Render(myWriter);
myWriter.Flush();
myWriter.Dispose();
System.IO.StreamReader strmRdr = new System.IO.StreamReader(mem);
strmRdr.BaseStream.Position = 0;
string pageContent = strmRdr.ReadToEnd();//获取要输出的html
strmRdr.Dispose();
mem.Dispose();
// 这里设置下断点,查看pageContent的值
// Session["Htmlcode"] = pageContent;
writer.Write(pageContent);写入输出流中
}