While I'm not sure I'd agree that I would never use them (I certainly have and probably end up doing it again because I'm a lazy bastard), James makes some really strong points against both mechanisms, and I do tend to agree (in principle at least) with most of them. They certainly reflect on things that bothered me about the ASP.NET execution model since the beginning:
- The core foundation in ASP.NET is really strong, and way cool: IHttpHandler's, HttpModules and so on are really powerful mechanisms.
- ASP.NET by default is totally built around post-backs, which are really annoying for navigation. This improved somewhat in v2.0, but the model makes things that were really easy in old ASP (yuck, who would've thought I'd be saying that!) because its model reflected fairly closely the GET/POST paradigm inherent to HTTP, and allowed you good control as to where to use each one. By contrast, ASP.NET pretty much expects you to use POST 99% of the time, with the implications:
- Bookmarking can be made pretty impossible in some scenarios if you're not careful
- You can end up with a lot of useless redirects which could've simply being done by taking the user to a different page directly from the browser (again, somewhat improved in v2.0)
- Back/Forward buttons don't always work as you intended them
- Viewstate... well, is there anything good to say on it?
The good part about all of this is that ASP.NET continues to improve, and certainly there are a lot of good things in v2.0, and I'm hopeful yet about what the next versions will bring to the table on these fronts.