On the browser-specific code generation, the HTML isn't any different that I've noticed. The differences come with the JavaScript .NET added to make web applications behave more like local Windows applications. Most of the nuts and bolts are fine, like the JS generated to run the _Click server event for buttons, images, links, etc. Something that has irked me a bit are the validators. Very useful controls, but in IE, they're all implemented in JS in addition to running on the server. In other browsers, the JS part is missing. So in IE, when I leave that phone number box with letters inside, it tells me I'm in error and won't let me submit the form, where Opera takes a submit trip to the server to find that out.
There's a certain amount of control added in for cases like this. ASP.NET detects whether the user's browser is "DownLevel" or not, and decides how fancy the JS can be. Unfortunately, the only non-DownLevel browser it sees is IE5+. It's marketed as a feature so that Netscape 4.0 visitors aren't bombarded with JS they can't run. You can tell a specific page or application to always treat browsers as DownLevel and at least get uniform behavior.
The plusses, however, far outwiegh my complaints. I still write a reasonable bit of Perl, and I have to say, I've never found an easier platform to debug a web application in than ASP.NET with VS.NET. DataBinding is pretty nice once you figure out everything it's doing. Windows apps are at least as simple to create as they were in VB6. There's a healthy bit of free code out there.
Just a few thoughts as I'm coming up on the end of my first year of working with .NET.
________________________________________
Andrew
I work for a
gift card company!