首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

请问一上, protected override void Render

2012-09-21 
请教一下, protected override void Render正在学习源代码,其中一个方法(位于BasicPage:system.web.ui.pag

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

热点排行