CompositeControlから派生した場合、タグタイプを取るコンストラクタはありません。あなたはTagKeyをオーバーライドすることができます(私はそれを試していない)が、より柔軟なオプションは、RenderBeginTagメソッドをオーバーライドし、あなたが望むようにすることです。基本クラスは "span"開始要素をレンダリングしますが、基本クラスメソッドを呼び出す必要はありません。レンダリングしたくない場合は、何も呼び出す必要はありません(この場合もRenderEndTagをオーバーライドし、何も呼び出さない)。例えば、
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Class, "reportViewer");
writer.AddAttribute(HtmlTextWriterAttribute.Id, "QueryViewerWrapper");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
}
このコードは、私は私のこの特定の複合コントロール、ReportViewerコントロールをラップするクラスを持つdiv要素のために必要な正確に何である
<div class="reportViewer" id="QueryViewerWrapper">
を生成します。私は、出力を見やすくするためにIDを含めるだけです。
+1 overrode tagKeyとうまく動作します – Maslow