ASP.NET Control to HTML tag equivalent ASP.NET Control to HTML tag equivalent asp.net asp.net

ASP.NET Control to HTML tag equivalent


This isn't a simple question, as it depends on which version of .NEt you're talking about and states of controls sometimes. For example, the PANEL, in 1 & 1.1 render to a TABLE while in later versions it's a DIV.

But overall (for 2/3), here goes:

  • Panel - Div

  • Panel -- GroupingText="###" is Fieldset, Legend

  • Label - Span

  • Button - Input, Type Button

  • Link Button - Href with JS Postback Script

  • Hyperlink - Standard HREF

  • Image Button - Input, Type Image

  • Textbox -- Default is Input, Type Text

  • Textbox -- Mode = Password is Input, type Password

  • Textbox -- Mode= Multiline is Textarea

  • DropDownList - Select

  • Listbox - Select

  • RadioButton - Input, Radio with GroupName

  • Checkbox - Input, Checkbox

  • Repeater/Listview --Complex.

  • Gridview - Table

  • Table - Table

  • File - Input, Type=File

    That's the basics. The more esoteric controls such as the LOGIN control is a table with a bunch of odds an ends within it.


Stephen's list is pretty comprehensive. I'd add the following notes to it though:

Mostly it depends on the known BrowserCaps.

A 1.x Panel will render as a div in IE6+ - however in Firefox (or other "DownStream" browsers - considered DownStream because there were no details of it in the Machine.Config by default) it will render as a single cell Table - this could be resolved by supplying updated BrowserCaps for Firefox/Opera/Safari/etc, either in the Machine.Config or Web.Configs.

Also, Control Adapters can change the output - for example the CSS Control Adapters will output styled divs for most of the tabular controls (login, registration, repeaters, etc).

Note that it was announced at TechEd/PDC that ASP.NET 4.0 will have the CSS control adapters built in by default.


This doesn't directly answer your question, but in a lot of cases, you can add runat="server" to a regular HTML tag to make ASP.Net aware of it. That might make things easier for the designer, if you want to be able to dynamically change the page, but still allow the designer to work on it.

<div id="myDiv" runat="server"></div><span id="mySpan" runat="server"></span>

Edit:

One thing that I forgot to mention (as pointed out by steve_c) is that adding runat="server" will change the ID for the tag, which can be a little bit of a pain. You're kind of out of luck if you're using the ID in your CSS, but in your JavaScript you can add something like <%= myDiv.ClientID %> to get the ID that was generated by .Net.