0

カスタム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>

これを防ぐにはどうすればよいですか?

4

1 に答える 1

2

ベースの render メソッドは と でタグ名を発行しRenderBeginTagますRenderEndTag()が、独自のレンダリングを行っている場合は呼び出さないでください。またHtmlGenericControl、あなたがそれを助けることができるなら、私はから継承しWebControlませControlWebControl.

通常のRender()方法はこれを行います:

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

必要なものを呼び出す限り、おそらくRenderContents()あなたの場合、呼び出す必要はありませんbase.Render(writer)

それでもオーバーライドしたい場合は、必ずプロパティHtmlGenericControlを設定してください。TagName

于 2010-02-19T12:43:55.413 に答える