2011-10-28 75 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 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> 

如何動態地刪除跨度標籤,但保留標籤輸入CON span標籤內的帳篷?

+0

它是一個CompositeControl嗎? – Mantorok

+1

請保留你的標題之外的東西,如「asp.net c#」。它在標籤中,這就是它所屬的地方。 –

回答

0

你試過重寫TagKey嗎?

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

默認情況下,它會嘗試渲染一個父控件。所以它會呈現爲父標籤的跨度。如果控件繼承自Web控件,則可以調整標記名以呈現不同的控件(http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webcontrol.tagname.aspx)。

或者,因爲你不想要它,不叫base.Render()當你重寫Render方法,並做到:

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

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

我相信包裝元素獲取與呈現RenderBeginTag( )和RenderEndTag();你也可以嘗試壓倒這些,並且什麼都不做。

你也在使用什麼基類?你是否繼承了Label?

0

您應該嘗試使用Literal控件而不是Label控件。

Label控件中的文本呈現HTML內部的標記,但文字控件呈現爲純文本。

相關問題