tgreer 189 Made Her Cry Team Colleague

Most ASP.NET Developers have no previous web development experience. Is that a true or false statement? I suspect it's true, but found no statistics to back it up. However, judging from posts in several technical forum sites, one certainly gets that impression.

"Halt App Until JavaScript Confirm Dialog Clicked". "JavaScript in code-behind problem". "How to fire ASP.NET code from JavaScript function". "Confirm delete". These are all titles of recent questions posted in various .NET forums. Also, I've seen a resurgence of questions that web developers either solved, or came to grips with, many years ago. For example, I've seen several discussions about how to "prevent" the user from clicking the "back" button! Another common area of confusion is the difference between client-side and server-side events and scripts. Why all of the confusion? I believe it's intrinsic to ASP.NET development.

One of the key "features" of ASP.NET is that it hides the HTML and JavaScript from the developer. ASP.NET consists of a large set of "ASP.NET Server Controls", which are placed by the developer onto a canvas called a "Web Form". Then the developer codes properties and event methods. Sound familiar? Yes, ASP.NET development was modeled after Visual Basic. This no doubt contributes to the wide appeal among traditional Windows developers.

Each ASP.NET Server Control "renders" or "outputs" HTML when the user browses to a page. In fact, a control may render different HTML, depending on the user's browser. In theory, this is a good thing. The developer doesn't have to worry about cross-browser issues. ASP.NET will automatically dumb-down the HTML for less capable browsers.

In actuality, it's terrible. For one, the web development community has largely solved the cross-browser issues, by using strict DOCTYPES, CSS and XHTML. If you want to produce XHMTL with ASP.NET, you're in for a long hard fight. You would need to "override" the HTML produced by each and every control, in effect, rewriting ASP.NET.

Secondly, shouldn't a web developer have a thorough understanding of, and a very fine control over, what the user actually sees? HTML is the fundamental building block of the web, yet many ASP.NET developers jump right into web development with only a cursory knowledge of HTML, because ASP.NET enables this lazy approach.

ASP.NET is a masquerade. It tries to obscure the fact that the web is built on a request-response model. Nothing can happen on the server, until the client submits a request. Meanwhile, the client has to wait for a response from the server. ASP.NET allows one to write code in response to a large array of "events", but the only "event" that actually occurs is when the user clicks "submit". Everything else is generated by the ASP.NET system, in response to what the user did client-side. By hiding this fundamental aspect of the web from the developer, ASP.NET causes the kind of confusion we often see in forum postings.

In discussing this with a long-time web developer friend, he summarized it this way: "ASP.NET makes hard things easy, and easy things hard". Does that echo your own experience? Do you have a love-hate relationship with ASP.NET, or is it the best thing that's happened to web development? I invite your replies.