动态删除span标签,同时保留内部内容

时间:2011-10-28 12:55:21

标签: c# asp.net html

我正在创建一个自定义控件来为表单创建标签输入块。

以下代码可单独使用:

<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 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>

如何动态删除span标记,但保留span标记内的标签输入内容?

3 个答案:

答案 0 :(得分:1)

默认情况下,它会尝试渲染一个父控件。所以它渲染一个span作为父标记。如果控件继承自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吗?

答案 1 :(得分:0)

您是否尝试过覆盖TagKey?

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

答案 2 :(得分:0)

您应该尝试使用Literal控件而不是Label控件。

Label控件中的文本在HTML内部标记中呈现,但Literal控件中的文本呈现为纯文本。