读书人

请问一上 protected override void

发布时间: 2012-09-21 15:47:26 作者: rapoo

请教一下, 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);    } 

读书人网 >asp.net

热点推荐