2010-02-19 85 views
0

我是新来编写自定义ASP.NET服务器控件,而我遇到了以下问题:ASP.NET服务器控件发射服务器端标签

我有一个从System.Web.UI.HtmlControls.HtmlGenericControl继承的控制。我重写控件的Render方法,使用HtmlTextWriter发出一些自定义的HTML(基本上是TD标签与一些自定义属性),然后调用的情况下类的Render方法。

使用控制:

<dc:Header id="header1" runat="Server" DataColumn="MemberNumber" Width="30%">Member Number</dc:Header > 

的问题是,当我认为我的渲染HTML,服务器标签被发射到客户端,以及(在TD标记之后):

<dc:Header id="ctl00_ContentPlaceHolder_testData1_testData1_header1">Member Number</dc:Header> 

如何防止这种情况发生?

+0

这不应该发生 - 你可以发表你的Render方法? – Ray 2010-02-19 12:42:33

回答

2

基本渲染方法会发出RenderBeginTagRenderEndTag()中的标记名,如果您正在进行自己的渲染,则不要调用它。我也不会从HtmlGenericControl继承,如果你能帮助它,从WebControlControl只是继承即使你需要没有WebControl属性。

正常Render()方法做到这一点:

protected override void Render(HtmlTextWriter writer) 
{ 
    RenderBeginTag(writer); 
    RenderContents(writer); 
    RenderEndTag(writer); 
} 

只要你叫你需要什么,可能RenderContents()在你的情况下,没有必要要求base.Render(writer)

如果你仍然想覆盖HtmlGenericControl一定要设置TagName property

+0

完美的作品,谢谢你的解释。 – staterium 2010-02-19 12:47:06