2009-08-19 8 views
0

私はASP.NETカスタムコンポジットコントロール(Inherits System.Web.UI.WebControls.CompositeControl)を作成しています。Property TagKey()から何もありません

デフォルトでは、コントロールマークアップはタグで囲まれたレンダリングです。私はSystem.Web.UI.HtmlTextWriterTag列挙型から任意のタグとしてリターンを設定するために、TagKeyプロパティを乗り越えることができることを知っています。

私の質問:.NETでマークアップを追加せずにコントロールをレンダリングすることはできますか?


UPDATE(3/2/2011)回答ありがとうございました。今私の質問をどのように解決しているかを示したい。私はスワティの考えの一部を統合すると思います。具体的には、AddAttributestoRender()が、私はCompositeControl属性を保持する親のマークアップタグが不足しているので、それが必要かどうか疑問に思っています。

マークアップタグが含まれないようにするには、1つのプロパティをオーバーライドします。& CompositeControlの2つのメソッド。

Protected Overrides ReadOnly Property TagKey() As System.Web.UI.HtmlTextWriterTag 
    Get 
     ' System defaults return as HtmlTextWriterTag.Span 
     Return HtmlTextWriterTag.Unknown 
    End Get 
End Property 

Public Overrides Sub RenderBeginTag(ByVal writer As System.Web.UI.HtmlTextWriter) 
    If Me.TagKey <> HtmlTextWriterTag.Unknown Then 
     MyBase.RenderBeginTag(writer) 
    End If 
End Sub 

Public Overrides Sub RenderEndTag(ByVal writer As System.Web.UI.HtmlTextWriter) 
    If Me.TagKey <> HtmlTextWriterTag.Unknown Then 
     MyBase.RenderBeginTag(writer) 
    End If 
End Sub 

答えて

2

何にTagKeyを設定して、明らかに、適切な方法

(下記参照)を含むCompositeControlとタグが、CompositeControlが動作するのが好きな方法に対してその作業を取り除くために、その可能性コントロールのメインタグは実際には(div、tableなど)です。

次に、AddAttributesToRender()をオーバーライドして、ラッパータグで必要な属性を設定します。

ラッピングタグ内で必要なものは、RenderContents()メソッドをオーバーライドしてレンダリングする必要があります。

CompositeControlがGeeksWithBlogs上here.

誰かがこれを見て、しかしラッピングを取り除くために、同様の問題についてhere

を書き込み)TagKeyとAddAttributesToRender(の利用者の説明を参照してください、WebControlから継承forum postには、コントロールコンストラクターとRenderBeginTagメソッドとRenderEndTagメソッドをオーバーライドしてラッピングタグを削除する方法が示されています。

+0

を持ち帰りポイント:CompositeControlは を作業するのが好きな方法に対してその作業私はあなたがAddAttributesToRenderを(指摘しcodeulike大感謝を言わなければなりません)。私はそれを見逃していた。このナゲットは非常に便利です。 他の作家への注意 - この投稿から学びます。答えには大きな助けとサポートのリンクが含まれていました!非常に助かりました – MADCookie

0

Render()メソッドをオーバーライドしてコンテンツだけをレンダリングすることはできませんか?

public override void Render(HtmlTextWriter writer) 
{ 
    RenderContents(writer); 
} 
1

がRenderBeginTag.The「のRenderBeginTag」のメイクの使用が唯一の開始タグに関連する「属性」のすべての種類に対処するための別の方法、「AddAttributestoRender」メソッドを呼び出します:たぶん、このようなものは、トリックを行うだろう。 「TagKey」は、ウェブコントロールに対応するデフォルトのHTMLタグに対応する。 「RenderBegintag」メソッド内に独自のタグを実装する場合、「TagKey」問題を単に忘れることができます。あなたはこのような何かを行うことができます。..

Public virtual void RenderBeginTag(HtmlTextWriter Writer) 
{ 
    AddAttributestoRender(writer); 
    HtmlTextWriterTag tagKey = TagKey; 
    If(tagKey != HtmlTextWriterTag.Unknown) 
    Writer.RenderBeginTag(tagKey); 
    Else 
    Writer.RenderBeginTag(this.tagName); 
} 
+0

非常によく言った。私はスタックオーバーフローが非常に古い質問の新鮮なビューをもたらす方法を愛する。共有するための時間を割いていただきありがとうございます。 – MADCookie

関連する問題