动态删除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作为父标签。如果您的控件继承自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控件中的文本以纯文本形式呈现。