23

さまざまな ASP.NET サーバー コントロールを作成しており、既定でコントロールをラップするタグを削除する必要があります。タグを別のタグに変更できることは承知しています (この質問のように、カスタム コントロールのレンダリング動作をスパンから変更するにはどうすればよいですか) が、どうすればそれを防ぐことができますか?

私は WebControl から継承しています (CompositeControl からも継承できます)。

私は通常得る:

<span>Control output</span>

私は欲しい:

Control output

RenderContents(HtmlTextWriter 出力) と CreateChildControls() メソッドを (さまざまなコントロール間で) オーバーライドしています。私の当面の必要性は、RenderContents(HtmlTextWriter output) メソッドを使用して問題に対処することです。

4

4 に答える 4

39

これはどうですか?

    public override void RenderBeginTag(HtmlTextWriter writer)
    {
        writer.Write("");
    }

    public override void RenderEndTag(HtmlTextWriter writer)
    {
        writer.Write("");
    }
于 2010-09-30T16:08:37.570 に答える
3

これを行うためのより洗練された方法は、WebControl のコントラスターを使用することです (デフォルトでは、これは HtmlTextWriterTag.Span で呼び出されます)。

public MyWebControl() : base(HtmlTextWriterTag.Div){}

RenderBeginTag メソッドをオーバーライドして、カスタム属性やその他のものを追加します。

public override void RenderBeginTag(HtmlTextWriter writer)
    {
        writer.AddAttribute("class", "SomeClassName");
        base.RenderBeginTag(writer);
    }
于 2013-01-25T10:27:47.877 に答える