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

本文关键字:保留 内部 删除 span 标记 动态 | 更新日期: 2023-09-27 18:12:35

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

下面的代码可以独立工作:

<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标签内的标签输入内容?

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

默认情况下,它尝试呈现一个父控件。它渲染一个span作为父标签。如果您的控件继承自web控件,则可以调整标记名以呈现不同的控件(http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.tagname.aspx)。

或者,因为你不需要它,当你重写渲染方法时不要调用base.Render(),而是:

protected virtual void OnRender(HtmlTextWriter writer)
{
    base.AddAttributesToRender(writer);
    //Render
    writer.RenderBeginTag("span");
    .
    .
}

我相信包装器元素得到渲染与RenderBeginTag()和RenderEndTag();你也可以尝试重写这些,什么都不做。

你也在使用什么基类?你是从Label继承的吗?

您是否尝试过重写TagKey?

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

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

Label控件中的文本在标签内以HTML形式呈现,而Literal控件中的文本以纯文本形式呈现。