2010-02-19 157 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