日期:2014-05-19  浏览次数:20405 次

|M| 谁帮我注释一下幕白兄写的一段代码 谢谢
WebControl   c   =   (WebControl)this.Controls[1];
//得到this中的第二个控件
System.IO.StringWriter   sw   =   new   System.IO.StringWriter();
//??
HtmlTextWriter   wt   =   new   HtmlTextWriter(sw);
//??
c.RenderControl(wt);
//??
writer.Write(sw.ToString().Replace( "display:none; ",   " "));
//??
wt.Close();
sw.Close();

------解决方案--------------------
1.实现一个TextWriter,使其以一种特定的编码向流中写入字符
2.将标记字符和文本写入到ASP.NET 服务器控件输出流
3.将服务器控件的内容输出到所提供的HtmlTextWriter 对象中
4.取或设置接收跟踪或调试输出的文本编写器
------解决方案--------------------


你主要查一下c.RenderControl(wt);中 RenderControl 的用法你应该就知道了他这么做是什么用意
------解决方案--------------------
这个访问是重写这个控件的RenderChildContrl事件. 这个控件有两个子控件. 因为第一个控件生成的html,里面的style有display:none 所以我先构建一个 HtmlTextWriter 得到这个控件输出的html代码,然后替换掉. 写到父控件的HtmlTextWriter 中去,第二个直接写.