Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

This is the sixteenth in a series of blog posts I’m doing on the upcoming VS 2010 and .NET 4 release.

Today’s post is the first of a few blog posts I’ll be doing that talk about some of the important changes we’ve made to make Web Forms in ASP.NET 4 generate clean, standards-compliant, CSS-friendly markup.  Today I’ll cover the work we are doing to provide better control over the “ID” attributes rendered by server controls to the client.

[In addition to blogging, I am also now using Twitter for quick updates and to share links. Follow me at: twitter.com/scottgu]

Clean, Standards-Based, CSS-Friendly Markup

One of the common complaints developers have often had with ASP.NET Web Forms is that when using server controls they don’t have the ability to easily generate clean, CSS-friendly output and markup.  Some of the specific complaints with previous ASP.NET releases include:

  • Auto-generated ID attributes within HTML make it hard to write JavaScript and style with CSS
  • Use of tables instead of semantic markup for certain controls (in particular the asp:menu control) make styling ugly
  • Some controls render inline style properties even if no style property on the control has been set
  • ViewState can often be bigger than ideal

ASP.NET 4 provides better support for building standards-compliant pages out of the box.  The built-in <asp:> server controls with ASP.NET 4 now generate cleaner markup and support CSS styling – and help address all of the above issues. 

Markup Compatibility When Upgrading Existing ASP.NET Web Forms Applications

A common question people often ask when hearing about the cleaner markup coming with ASP.NET 4 is “Great - but what about my existing applications?  Will these changes/improvements break things when I upgrade?”

To help ensure that we don’t break assumptions around markup and styling with existing ASP.NET Web Forms applications, we’ve enabled a configuration flag – controlRenderingCompatibilityVersion – within web.config that let’s you decide if you want to use the new cleaner markup approach that is the default with new ASP.NET 4 applications, or for compatibility reasons render the same markup that previous versions of ASP.NET used:

 

 

image 

When the controlRenderingCompatibilityVersion flag is set to “3.5” your application and server controls will by default render output using the same markup generation used with VS 2008 and .NET 3.5.  When the controlRenderingCompatbilityVersion flag is set to “4.0” your application and server controls will strictly adhere to the XHTML 1.1 specification, have cleaner client IDs, render with semantic correctness in mind, and have extraneous inline styles removed.

This flag defaults to 4.0 for all new ASP.NET Web Forms applications built using ASP.NET 4. Any previous application that is upgraded using VS 2010 will have the controlRenderingCompatibilityVersion flag automatically set to 3.5 by the upgrade wizard to ensure backwards compatibility.  You can then optionally change it (either at the application level, or scope it within the web.config file to be on a per page or directory level) if you move your pages to use CSS and take advantage of the new markup rendering.

Today’s Cleaner Markup Topic: Client IDs

The ability to have clean, predictable, ID attributes on rendered HTML elements is something developers have long asked for with Web Forms (ID values like “ctl00_ContentPlaceholder1_ListView1_ctrl0_Label1” are not very popular).  Having control over the ID values rendered helps make it much easier to write client-side JavaScript against the output, makes it easier to style elements using CSS, and on large pages can help reduce the overall size of the markup generated.

New ClientIDMode Property on Controls

ASP.NET 4 supports a new ClientIDMode property on the Control base class.  The ClientIDMode property indicates how controls should generate client ID values when they render.  The ClientIDMode property supports four possible values:

  • AutoID—Renders the output as in .NET 3.5 (auto-generated IDs which will still render prefixes like ctrl00 for compatibility)
  • Predictable (Default)— Trims any “ctl00” ID string and if a list/container control concatenates child ids (example: id=”ParentControl_ChildControl”)
  • Static—Hands over full ID naming control to the developer – whatever they set as the ID of the control is what is rendered (example: id=”JustMyId”)
  • Inherit—Tells the control to defer to the naming behavior mode of the parent container control

The ClientIDMode property can be set directly on individual controls (or within container controls – in which case the controls within them will by default inherit the setting):

image

Or it can be specified at a page or usercontrol level (using the <%@ Page %> or <%@ Control %> directives) – in which case controls within the pages/usercontrols inherit the setting (and can optionally override it):

image

Or it can be set within the web.config file of an application – in which case pages within the application inherit the setting (and can optionally override it):

image

This gives you the flexibility to customize/override the naming behavior however you want.

Example: Using the ClientIDMode property to control the IDs of Non-List Controls

Let’s take a look at how we can use the new ClientIDMode property to control the rendering of “ID” elements within a page.  To help illustrate this we can create a simple page called “SingleControlExample.aspx” that is based on a master-page called “Site.Master”, and which has a single <asp:label> control with an ID of “Message” that is contained with an <asp:content> container control called “MainContent”:

image

Within our code-behind we’ll then add some simple code like below to dynamically populate the Label’s Text property at runtime:

image 

If we were running this application using ASP.NET 3.5 (or had our ASP.NET 4 application configured to run using 3.5 rendering or ClientIDMode=AutoID), then the generated markup sent down to the client would look like below:

image

This ID is unique (which is good) – but rather ugly because of the “ct100” prefix (which is bad).

Markup Rendering when using ASP.NET 4 and the ClientIDMode is set to “Predictable”

With ASP.NET 4, server controls by default now render their ID’s using ClientIDMode=”Predictable”.  This helps ensure that ID values are still unique and don’t conflict on a page, but at the same time it makes the IDs less verbose and more predictable.  This means that the generated markup of our <asp:label> control above will by default now look like below with ASP.NET 4:

image

Notice that the “ct100” prefix is gone. Because the “Message” control is embedded within a “MainContent” container control, by default it’s ID will be prefixed “MainContent_Message” to avoid potential collisions with other controls elsewhere within the page.

Markup Rendering when using ASP.NET 4 and the ClientIDMode is set to “Static”

Sometimes you don’t want your ID values to be nested hierarchically, though, and instead just want the ID rendered to be whatever value you set it as.  To enable this you can now use ClientIDMode=static, in which case the ID rendered will be exactly the same as what you set it on the server-side on your control.  This will cause the below markup to be rendered with ASP.NET 4:

image

This option now gives you the ability to completely control the client ID values sent down by controls.

Example: Using the ClientIDMode property to control the IDs of Data-Bound List Controls

Data-bound list/grid controls have historically been the hardest to use/style when it comes to working with Web Form’s automatically generated IDs.  Let’s now take a look at a scenario where we’ll customize the ID’s rendered using a ListView control with ASP.NET 4.

The code snippet below is an example of a ListView control that displays the contents of a data-bound collection — in this case, airports:

image

We can then write code like below within our code-behind to dynamically databind a list of airports to the ListView above:

image

At runtime this will then by default generate a <ul> list of airports like below.  Note that because the <ul> and <li> elements in the ListView’s template are not server controls, no IDs are rendered in our markup:

image

Adding Client ID’s to Each Row Item

Now, let’s say that we wanted to add client-ID’s to the output so that we can programmatically access each <li> via JavaScript.  We want these ID’s to be unique, predictable, and identifiable.

A first approach would be to mark each <li> element within the template as being a server control (by giving it a runat=server attribute) and by giving each one an id of “airport”:

image

By default ASP.NET 4 will now render clean IDs like below (no ctl001-like ids are rendered):

image 

Using the ClientIDRowSuffix Property

Our template above now generates unique ID’s for each <li> element – but if we are going to access them programmatically on the client using JavaScript we might want to instead have the ID’s contain the airport code within them to make them easier to reference.  The good news is that we can easily do this by taking advantage of the new ClientIDRowSuffix property on databound controls in ASP.NET 4 to better control the ID’s of our individual row elements.

To do this, we’ll set the ClientIDRowSuffix property to “Code” on our ListView control.  This tells the ListView to use the databound “Code” property from our Airport class when generating the ID:

image

And now instead of having row suffixes like “1”, “2”, and “3”, we’ll instead have the Airport.Code value embedded within the IDs (e.g: _CLE, _CAK, _PDX, etc):

image

You can use this ClientIDRowSuffix approach with other databound controls like the GridView as well. It is useful anytime you want to program row elements on the client – and use clean/identified IDs to easily reference them from JavaScript code.

Summary

ASP.NET 4 enables you to generate much cleaner HTML markup from server controls and from within your Web Forms applications. 

In today’s post I covered how you can now easily control the client ID values that are rendered by server controls.  In upcoming posts I’ll cover some of the other markup improvements that are also coming with the ASP.NET 4 release.

Hope this helps,

Scott

Published Tuesday, March 30, 2010 7:02 PM by ScottGu

Comments

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Tuesday, March 30, 2010 10:09 PM by rajbk

Didn't you just get back?? Did you write this on the plane?

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Tuesday, March 30, 2010 10:12 PM by ScottGu

@rajbk,

>>>>>>>> Didn't you just get back?? Did you write this on the plane?

Wrote it this afternoon...  Now I get to sleep... :-)

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Tuesday, March 30, 2010 10:13 PM by Simon Holman

Thanks Scott

Fantastic examples

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Tuesday, March 30, 2010 10:35 PM by Russ

Nice post.  Explains it all.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Tuesday, March 30, 2010 10:51 PM by Arun Mahendrakar

Great to know Scott.. Thanks.

Arun

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Tuesday, March 30, 2010 10:59 PM by Lohith

Hi Scot

Great post. I think controlling the ID on the ASP.NET controls was one of the things we had always wanted to have. I think with ASP.NET 4 we have a very clean way of controlling these IDs. Great job from the ASP.NET team and Kudos to you :)

regards

Lohith

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 12:01 AM by Snahider

Very useful as always,thanks

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 12:12 AM by vik20000in

good post once again as always :-)

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 12:23 AM by Nadia

Could you provide an example of using javascript to reference the predictable, suffixed IDs generated by the ListView?

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 1:37 AM by Sharbel_

Great to see this new level of control for web-form developers.  We've honestly moved away from webforms in favor of MVC for a lot of the reasons that are now being addressed in 4.0 web-forms.  Nonetheless, I am sure we will still have to work with web form projects here and there, so this is a welcome addition!

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 1:49 AM by shawpnendu

Yes its definitely help us to write client side code for dynamically generated server controls. Thanks a lot.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 2:13 AM by Dmitry

Is the generated HTML markup for controls such as GridView more web designer friendly (less table oriented) in .NET 4.0?

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 2:43 AM by Arjun

great feature. thanks scott

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 3:09 AM by Javier Crespo

Hi Scott,

For the ClientIdMode, the default value for pages is AutoId and for controls Inherit.

Predictable is in neither case the default.

Javier

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 4:50 AM by Dan Diplo

This is a very welcome change. But it does beg the question, "What was the point of the ctl00 prefix in the first place"?

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 5:16 AM by nomercy007

I believe this will also fix the ControlID issue for the CONTROLPARAMETER in the datasource if the controls were in a different container ( it was strange that I have to use ControlID="ctl00$ContentPlaceHolder1$txtDate" for a server-side control !)?

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 5:28 AM by Mastan Oli

Hi Scott,

Wonderful article. Thanks for sharing :) , Does ASP.NET provide any new concept about caching?

Thanks

Mastan

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 5:54 AM by rblaettler

This is not exactly on topic, but the new ASP.NET Menu outputs javascript, even with an Adapter attached.

new Sys.WebForms.Menu({ element: 'NavigationMenu', disappearAfter: 500, orientation: 'horizontal', tabIndex: 0, disabled: false }

Is there a way to avoid that?

Also see here:

forums.asp.net/.../1540848.aspx

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 7:07 AM by Mohammad Mahdi Ramezanpour

Thanks for the always-useful-post. ClientID issues was one of the main problem I had in some of my Web applications. Maybe I can use this feature in my upcoming projects ;-)

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 7:57 AM by Junaid Arif Mufti

WoW I have been wanting this for a long long time. One question though can we set ClientIDMode to Static in a List control ? What effect will that have on List's bound inner control IDs

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 8:24 AM by Amir

This is great.. but I really think ASP.NET needs a total redesign that will make it suite to the AJAX era.

Like a unified client framework with special controls and client-code that is written in C# style code and then translated into javascript.

WebForms is not written in AJAX/Performance/client in mind.

MVC is just a server framework with too much development overhead.

ASP.NET Ajax is too complicated for simple tasks and not much integrated into the core ASP.NET framework.

Hope you'll do better in ASP.NET 5.0 :)

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 8:33 AM by Hernan

This is great, I was waiting this for a long time. Now you can write cleaner javascript code too.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 9:16 AM by rajbk

@rblaettler,

It looks like the js is hardcoded by default in an internal class called MenuRendererStandards which inherits from Menu.MenuRenderer :(

Raj

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 9:30 AM by Lee Englestone

Woah!.. Client Goodness!

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 10:30 AM by rblaettler

@Raj

Is there any way around this? It kills my own javascript that I have for the menu.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 10:39 AM by Asif Maniar

Thanks Scott!

Love that I can jQuery my application in everyway possible now.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 11:54 AM by rpgkaiser

Very welcome features!! Is there any incoming plan to extend this clean ID generation, to the name attribute of the input elements? and why not, to remove the restriction of have to place server controls inside run at server forms? This could be the final steps to make possible the free usage of ASP.NET server controls in an ASP.NET MVC application...very very nice, at least for me!

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 12:56 PM by ScottGu

@Nadia,

>>>>>>>> Could you provide an example of using javascript to reference the predictable, suffixed IDs generated by the ListView?

You should be able to use standard techniques to reference the ID element.  For example, with jQuery you could write:

  var item = $("Airports_Airport_SEA");

Hope this helps,

Scott

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 12:57 PM by Arnold Boersma

Thanks Scot!

Now I can use JQuery without using any tricks to track my Id's!

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 12:58 PM by ScottGu

@Dmitry,

>>>>>>>> Is the generated HTML markup for controls such as GridView more web designer friendly (less table oriented) in .NET 4.0?

My next blog post (hopefully tonight) will cover some of the semantic markup changes being made with .NET 4.  The GridView is primarily about displaying tabular data - so it still uses tables.  Controls like Menu, CheckBoxLists, etc now use Divs though.  I'll post more details in the next post.

Hope this helps,

Scott

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 1:00 PM by ScottGu

@Javier,

>>>>>>>> For the ClientIdMode, the default value for pages is AutoId and for controls Inherit.  Predictable is in neither case the default.

Actually, Predictable is the default for pages. Controls inherit their parents by default - which is why that means predictable rendering happens by default for them as well.  The first beta was different - which might be why you thought it was AutoId by default.

Note that if you upgrade an existing project, then the web.config file is updated to run in compat mode - in which case AutoId is the default.

Hope this helps,

Scott

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 1:01 PM by ScottGu

@Dan,

>>>>>>>>> This is a very welcome change. But it does beg the question, "What was the point of the ctl00 prefix in the first place"?

The origional goal was to ensure that ID values were unique.  But the implementation ended up making them both unique and kinda ugly.  .NET 4 hopefully makes them unique and clean by default.

Hope this helps,

Scott

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 1:02 PM by ScottGu

@ rblaettler

>>>>>>>> This is not exactly on topic, but the new ASP.NET Menu outputs javascript, even with an Adapter attached.  Is there a way to avoid that?

I'll cover the menu control more in my next blog post.  But the short answer is that it now has a EnableClientScript="false" property that you can set to avoid any JavaScript being rendered.

Hope this helps,

Scott

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 2:02 PM by Dinesh Dhamija

This is great.

Well Written

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 3:17 PM by ScottGu

@Junaid,

>>>>>>> WoW I have been wanting this for a long long time. One question though can we set ClientIDMode to Static in a List control ? What effect will that have on List's bound inner control IDs

Yes - you can set it to be static within a list control.  That will make the ID's flat at that level.  You could then optionally turn it to be Predictable again within the templates as well.  Basically you can change the default behavior at any level of the control hierarchy.

Hope this helps,

Scott

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 3:35 PM by Glen

I hate to be the only negative voice but this really feels like a bodge to cover up a bad id naming system... it's always been a pain to get the correct ID's for controls and then all the fidling to sort the interaction between javascript and the form and now finally in version 4 we're back to where it started!

Despite this, it's handy to finally be able to keep the ID's you specify so thanks!

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 5:31 PM by Abhilash

Awesome..! I like it. Waiting for it from a long time. Getting really excited to use VS 2010 on Realtime projects.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 5:38 PM by Pavel Nikolov

Great news! Static IDs - something I've been longing for! With predictable IDs it will be way easier to use jQuery with ASP.NET : )

Pavel

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 5:45 PM by rblaettler

@ScottGu

Thanks for the info. Unfortunately the EnableClientScript="false" does not show up in AutoComplete, nor does it have any effect. I'm using ASP.NET 4.0 RC.

Is this for a newer version?

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, March 31, 2010 7:16 PM by Nick

Hell, it's about time :)

I mean it's about time MS got this right. This is enough to make me switch to .net 4.0 ASAP. I was never that eager to upgrade to a newer version.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Thursday, April 1, 2010 12:58 AM by ddredstar@hotmail.com

when i was starting to use asp.net,i hate the ugly auto id. the new id mechanism really make me happy.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Thursday, April 1, 2010 2:08 AM by robby-led light

It's really usefull.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Thursday, April 1, 2010 3:08 AM by Ngo Thanh Tung

That's good feature! It will be better when use jQuery Library.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Thursday, April 1, 2010 8:35 AM by Arefin Ali

Hi Scott, thanks for such a wonderful post.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Thursday, April 1, 2010 8:36 AM by Arefin Ali

Its a really very helpful article.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Thursday, April 1, 2010 3:06 PM by John

Now I remember why I've come to love MVC -- things are clean from the start and not all that extra knowledge about the proper way to do something in asp so that it turns out right on the client. Don't get me wrong, I like the fact that you team is interested in clean output, but it just seems like another hack trying to fix a flawed pattern (i.e. web forms).

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Thursday, April 1, 2010 3:10 PM by Shail

Hello Scott,

Are there some performance improvements in ASP.NET 4.0. I am specifically looking for changes made in ASP.NET infrastructure like HTTP pipeline or modules or handlers. Still the topic how HTTPApplication class works is not so clear to me. How it is used and pooling things

Thanks

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Thursday, April 1, 2010 10:23 PM by pbz

I would love to see/hear that the Calendar control has been shown some love. There are some weird things going on with that control; weird from a design point of view. You can customize each cell but not next/previous month without ending up with nested anchors because it assumes you're always going to use PostaBack. It also hardcodes some style settings without a way of overriding them, and so on. With a little bit of cleanup it could be transformed into a very powerful control...

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Friday, April 2, 2010 12:09 AM by Foysal

Scott, we need cleaner html after rendering. No garbage. This one gives us the hope. Good post

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Saturday, April 3, 2010 6:59 AM by Dejan

Looking forward to that article on the asp:menu control. Given the importance of the control, the current one is mildly put horrible (any web designer who's tried using it knows what I'm talking about)

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Tuesday, April 6, 2010 4:21 AM by tina09

This post is very great, I help me understand more about .Net web development, I will waiting for next upgrade.

Thanks.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Tuesday, April 6, 2010 12:19 PM by Sam

This is good to hear but why did some server controls not adhere to the XHTML 1.1 specification to begin within in 3.5 and below?  

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, April 7, 2010 9:32 AM by Eric

Would placing the VIEWSTATE near the closing FORM tag be more SEO-friendly since some search engines only index the first n-amount of bytes?  Would doing so have an adverse affect on page performance and logical execution?

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, April 7, 2010 8:31 PM by suradecs

new information for me. Thanks.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Friday, April 9, 2010 1:01 AM by louis vuitton

why the XHTML 1.1 specification to begin within in 3.5 and below?  

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Saturday, April 10, 2010 3:05 PM by bryiantan

nice! thank you.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Monday, April 12, 2010 5:12 PM by nelusan

It's great that ASP NET 4.0 learns from the mistakes of the past. Thanks for this article. Onestly I don't see the point in adding a property like 'ClientIDRowSuffix'. This could have been done very easy differently, still using databinding for constructing client item ids.

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Tuesday, April 13, 2010 9:09 AM by mystrymaster

Awesome stuff both the changes and the post

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Sunday, April 18, 2010 1:42 AM by grow taller 4 idiots

There are some weird things going on with that control; weird from a design point of view. You can customize each cell but not next/previous month without ending up with nested anchors because it assumes you're always going to use PostaBack. It also hardcodes some style settings without a way of overriding them, and so on. With a little bit of cleanup it could be transformed into a very powerful control...

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Sunday, April 18, 2010 9:56 AM by Jayasankar Pandyat

Great post and a very nice feature Scott!!!

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Monday, April 19, 2010 12:56 AM by Thanigainathan

Hi,

Thats very nice article .

Very deep and elobaorate.

thanks,

Thanigainahtan.S

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Monday, April 19, 2010 4:47 AM by Tulika Shrivastava

nice article

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Monday, April 19, 2010 12:48 PM by smcmiata

Thanks Scott, looking forward to 4.0!

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Monday, April 19, 2010 3:05 PM by Arnold Koske

Wow.So clean and beautifuly implemented. The ClientIDMode property &  ClientIDRowSuffix Property are pure genius. You have no idea what I had to do to access ASPNET server controls using jquery.

I have been having been woried sick lately thinking that webforms was dead and gone and we'll all have to switch to MVC(or worse PHP !!). But the new Improvements in 4.0 have made me a believer again.

Great Job! Keep the improvements coming.Eventually I will have no reason at all to switch !

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Wednesday, April 28, 2010 9:06 AM by Speaking English

Could someone please provide me coding and html for an order form of ASP???

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Thursday, April 29, 2010 9:43 AM by Manjunath

Is there any performance issues related to ClientIDMode.?

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Saturday, May 8, 2010 4:18 PM by jaideepg

Awesome examples.  They were helpful.  Thanks

# re: Cleaner HTML Markup with ASP.NET 4 Web Forms - Client IDs (VS 2010 and .NET 4.0 Series)

Sunday, May 16, 2010 12:22 AM by brbtx

That is very useful information as always,thanks