请教一下, protected override void Render
正在学习源代码,其中一个方法(位于BasicPage:system.web.ui.page里),就是这个
protected override void Render(HtmlTextWriter writer)
{
StringWriter sw = new StringWriter();
HtmlTextWriter htmlw = new HtmlTextWriter(sw);
base.Render(htmlw);
htmlw.Flush();
htmlw.Close();
string pageContent = sw.ToString();
pageContent += @"<div align='center'><a href='http://www.v5soft.com' title='v5soft软件提供'>Powered by v5soft.com</a></div>";
Response.Write(pageContent);
}
因为BasicPage:system.web.ui.page,所以把一些公共配置放到这里,这个方法到底是干什么的有什么用,请高手们帮忙下,谢谢了
------解决方案--------------------在原来正常的html后边再加入一些字符。这里就是所谓的“软件提供”信息。
不过,这个方法输出的是烂html,已经不是一个完整的html了。它靠浏览器的容错来保证。
假设一个比较专业的asp.net设计师,不应该这样写代码。他完全可以在Page_prerender事件中在Page.Controls中添加自己的LiteralControl,没有必要去重写什么Render方法。
------解决方案--------------------如果页面有<%%>脚本控件的话,就用这种方法来追加html
C# code
protected override void Render(HtmlTextWriter writer)
{
form1.SetRenderMethodDelegate(delegate(HtmlTextWriter htw, Control ctl)
{
var ctls = ctl.Controls;
for (int i = 0, count = ctls.Count; i < count; i++)
{
ctls[i].RenderControl(htw);
}
htw.Write("<div>版权信息</div>");
});
base.Render(writer);
}