当前位置: 代码迷 >> ASP.NET >> 请问一上, protected override void Render
  详细解决方案

请问一上, protected override void Render

热度:2391   发布时间:2013-02-25 00:00:00.0
请教一下, 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);    }
  相关解决方案