Question

How can I force the WebControl to render as a <div>? Currently, it renders as a <span> and our UI guy prefers it be a <div>. To accommodate him, I'd like to see if this is possible and if so, how it's possible.

Was it helpful?

Solution

Yes, it is definitely possible. Asp.net gives you full control over the output rendered.

Take a look at Control Adapters

The asp.net team has released many adapters for CSS friendly rendering for controls like Menu, TreeView, and FormView. Take a look at CSS friend control adapters

You can always build your own to customize the rendering as needed by your UI guy.

OTHER TIPS

You can override the RenderBeginTag method of WebControl:

public override void RenderBeginTag(HtmlTextWriter writer)
{
    writer.RenderBeginTag("div");
}

There's also a RenderEndTag that you can override, which might not be necessary in this case:

public override void RenderEndTag(HtmlTextWriter writer)
{
    writer.RenderBeginTag();
}

Probably better to override TagKey like so:

protected override HtmlTextWriterTag TagKey => HtmlTextWriterTag.Div;

Then any attributes the WebControl would render continue to be placed on opening tag.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top