views:

2559

answers:

5

I'm looking for a cheat sheet that will allow me to show an HTML designer the equivalent asp.net controls for standard HTML tags. As an example the <asp:Panel> will render as an HTML <div> and an <asp:Label> will render as an HTML <span>. I've been googling this to no avail. Can someone post a link to a good cheat sheet so that the designers on this project can understand the markup on the aspx pages more clearly.

To be clear, I would like a link to a list of major ASP.NET controls, with descriptions as to how they would relate to standard HTML. It would be great if this were in PDF format or on an easy to read and print web page. The reason, in my case, would be that we have a PHP developer who is very familiar with HTML coming to work on our project, and I feel it would be useful to have a better understanding of standard ASP.NET server controls if I could hand him such a "cheat sheet".

I'm referring mainly to the .NET 2.0 framework, but we are also doing work with 3.0/3.5.

+1  A: 

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.

Matt Ephraim
this is true, you can add runat to virtually any control. Here we have aspx pages already created using asp.NET server controls. We have a new designer working on it now from the PHP/HTML world, and I'm looking to give him better understanding of the server controls.
stephenbayer
+14  A: 

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
  • Label - Label
  • 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, Checkbox 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 Wrighton
Note that LinkButton renders an anchor element (A) that does a postback on click. The HyperLink element would be more appropriate for regular anchor elements (A).
GoodEnough
Panel -> div *and sometimes table* applies to 2.0 as well, damn thee downscaling
annakata
@Crossbrowser - very good point. @annakata - I wasn't considering downscaling when building the list. Just a generalized overview
Stephen Wrighton
also RadioButton -> input type="radio" unless I'm mistaken
annakata
@Stephen - pretty big gotcha though, and you mentioned the effect for 1.x
annakata
thanks, this is a good list. I'm trying to find out if there was like a PDF list of asp.NET controls that I could give to a PHP designer that's only used HTML to understand the asp.NET controls.
stephenbayer
@anakata - no, Radio Buttons are bunch of inputs of type checkboxes, with the same name, though they may have different IDs. And yes, it is a pretty big gotcha, I was just explaining why I didn't think of it.
Stephen Wrighton
@stephenbayer - not to my knowledge. The new guy would be better served just using .NET, and then asking any questions as he thinks of them. I crossed over from PHP to .NET and didn't have any problems understanding the differences.
Stephen Wrighton
A: 

To add to what Matt Ephraim said, you should be aware that by adding a runat="server" ASP.NET could potentially modify the id attribute of the tag in question, if that tag is inside an ASP.NET naming container.

steve_c
That's true. I should have mentioned that.
Matt Ephraim
A: 

htmlgenericcontrol might be of help if you need to render a specific tag

Element
+7  A: 

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.

Zhaph - Ben Duguid