这里关键是对于HTMLTextWriter的使用,好好看MSDN 吧
![](https://www.cnblogs.com/Emoticons/QQ/13.gif)
这里我想说的是对于使用Control类的呈现方法
该类提供了三种用于实现控件呈现,Render、RenderChildren、RenderControl,均使用HtmlTextWriter的实例作为参数,三个方法看上去好像是独立的3个方法 ,其实不然,下面的代码可以说明三者的关系
1
public void RenderControl(HtmlTextWriter output)
2
{
3
if(Visible)
4
{
5
Render(output);
6
}
7
}
8![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
public virtual void Render(HtmlTextWriter output)
11
{
12
RenderChildren(output);
13
}
14![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
public virtual void RenderChildren(HtmlTextWriter output)
16
{
17
foreach(Control c in Controls)
18
{
19
c.RenderControl(output);
20
}
21
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
因此对于了解这个很重要,下面有一个我写的一小段程序,可以帮助您理解他,这里是下载文件RenderControl
二、WebControl类的呈现方法
如果您开发的控件包含可视化元素,多数情况下使用由基类System.Web.UI.WebControls.WebControl派生。
WebControl基类中存在两个方法Render 和RenderContents,通常情况下控件由WebControl派生,主要适用RenderContent实现呈现,很少使用Render,在WebControl中Render的实现如下:
1
protected override void Render(HtmlTextWriter output)
2
{
3
RenderBeginTag(output);
4
RenderContents(output);
5
RenderEndTag(ouput);
6
}
在WebControl基类中的RenderBeginTag方法的实现如下:![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
1
public virtual void RenderBeginTag(HtmlTextWriter output)
2
{
3
AddAttributesToRender(output);
4
HtmlTextWriterTag tagKey=TagKey;
5
if(tagKey!=HtmlTextWriterTag.Unknown)
6
{
7
output.RenderBeginTag(tagKey);
8
}
9
else
10
{
11
output.RenderBeginTag(this.TagName);
12
}
13
}
RenderContents实现如下:![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
protected internal virutal void RenderContents(HtmlTextWriter outpus)
{
base.Render(output);
}
}