2011-10-28 12 views
0

フォーム用のラベル入力ブロックを作成するカスタムコントロールを作成しています。内部コンテンツを保存しながらスパンタグを動的に削除する

次のコード独自に動作します:

<label id="custom_calendar_label" class="required" for="custom_calendar">Calendar thing: </label> 
<input id="custom_calendar" type="date" required="required" aria-labelledby="custom_calendar_label"> 

が、私は何らかの理由で、それを構築するために、カスタムサーバーコントロールを使用して、カスタムコントロールの周りのspanタグが自動的に(ないで任意のコードから生成されます私のカスタムコントロール)、

はので、私のコードは、私が動的にspanタグを削除しますが、ラベルの入力CONを維持するにはどうすればよい

<span id ="custom_calendar"> 

<label id="custom_calendar_label" class="required" for="custom_calendar">Calendar thing: </label> 
<input id="custom_calendar" type="date" required="required" aria-labelledby="custom_calendar_label"> 

</span> 

ように見える巻き上げますスパンタグ内のテント?

+0

CompositeControlですか? – Mantorok

+1

"asp.net c#"のようなものはあなたのタイトルから守ってください。それはタグの中にあり、それはそれが属する場所です。 –

答えて

0

TagKeyを上書きしようとしましたか?

protected override HtmlTextWriterTag TagKey 
    { 
     get { return HtmlTextWriterTag.Unknown; } 
    } 
1

デフォルトでは、1つの親コントロールをレンダリングしようとします。つまり、その親タグとしてスパンをレンダリングしています。コントロールがWebコントロールから継承される場合は、別のコントロールをレンダリングするためにタグ名を調整できます(http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.tagname.aspx)。

それとも、あなたがそれを望んでいないことから、あなたはrenderメソッドをオーバーライドするときbase.Render()を呼び出し、実行しない:

protected virtual void OnRender(HtmlTextWriter writer) 
{ 
    base.AddAttributesToRender(writer); 

    //Render 
    writer.RenderBeginTag("span"); 
    . 
    . 
} 

私は(ラッパー要素がのRenderBeginTagでレンダリングされると信じて)およびRenderEndTag();それらを上書きして何もしないでください。

あなたはどの基本クラスも使用していますか?あなたはLabelから継承していますか?

0

ラベルコントロールの代わりにリテラルコントロールを使用するようにしてください。

Labelコントロールのテキストはタグ内のHTMLでレンダリングされますが、Literalコントロールのテキストはプレーンテキストとしてレンダリングされます。

関連する問題