I am writing various ASP.NET Server controls and am needing to remove the tags that wrap my control by default. I am aware that you can change the tag to a different tag (as in this question, How Do I Change the render behavior of my custom control from being a span) but how can you prevent it?
I am inheriting from WebControl (can also inherit from CompositeControl).
I typically get:
<span>Control output</span>
I need:
Control output
I am overriding RenderContents(HtmlTextWriter output) and the CreateChildControls() methods (across various controls). My immediate need is to address the issue using the RenderContents(HtmlTextWriter output) method.
What about this?
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.Write("");
}
public override void RenderEndTag(HtmlTextWriter writer)
{
writer.Write("");
}
A more elegant way to do this is by using the contrustor of WebControl (By default this is called with the HtmlTextWriterTag.Span)
public MyWebControl() : base(HtmlTextWriterTag.Div){}
and override the RenderBeginTag method to add custom attributes or other stuff:
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.AddAttribute("class", "SomeClassName");
base.RenderBeginTag(writer);
}
I was experiencing the same issue. In my case I was overriding the methods:
protected override void OnPreRender(EventArgs e)
{ /* Insert the control's stylesheet on the page */ }
and
protected override void RenderContents(HtmlTextWriter output)
{ /* Control rendering here, <span> tag will show up */ }
To prevent this, I simply replaced the RenderContents
override with the following:
protected override void Render(HtmlTextWriter output)
{ /* Control rendering, no <span> tag */ }
Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With