ASP.NET MVC Is My Shrieking Electric Guitar
This is your HTML markup:

This is your HTML markup on drugs ASP.NET:

Any questions?
ASP.NET offers a lot of horsepower, especially in its most recent incarnation. I give you jQuery, AJAX, Dynamic Data, control adapters, and more.
But traditional ASP.NET web pages are littered with cruft: hidden fields, obscure Javascript, and a ubiquitous <form> element even on pages which don't look, act, or talk like forms. The ASP.NET WebForms infrastructure extracts a price. That price is the sanctity of your generated markup.
We could almost call clean markup the sacrificial lamb of ASP.NET WebForms development. It's what you give up in order to achieve the illusion of state in that stateless medium known as the World Wide Web. If you develop in ASP.NET, then you've probably spent a lot of time chasing your tail as I have, ferreting out how to clean up ASP.NET-generated markup to make it palatable:
- Reduce or removing VIEWSTATE and other hidden fields
- Relocate Javascript functions from the top of the file to the bottom
- Use control adapters to tweak generated markup of server controls
- Create customized HtmlTextWriters and hook them in to your page classes
- Override Page.Render and accomplish all kinds of mischief
- Apply regular expression replaces to your finished page output
But the problem with these hacks techniques is that they attack the symptoms, rather than the cause.
Dense, encrusted markup is the natural result of trying to graft a desktop application development paradigm (with events and easily recallable state and so forth) onto an inherently stateless, request-response medium: the World Wide Web. This is what ASP.NET tries to do, and that it succeeds at all (and it does succeed) is a testament to the ingenuity of the ASP.NET development team.
Still: the generated markup is ugly and loaded with boilerplate. There can be no arguing with this, although for most line-of-business applications, it doesn't matter. A little extra markup doesn't hurt anyone, neither in the transmission over the wire, nor when the Google spiders come crawling. (Although in some worst-case scenarios, unbridled viewstate has been known to grow to a few megabytes in size).
But if you're a stickler, a purist, or if you're building something that needs to be lean and mean, a typical ASP.NET WebForms application just doesn't give you the fine-grained control that you'll want—at least, not without a lot of extra work.
Enter ASP.NET MVC
You've probably heard about ASP.NET MVC by now (the official beta was released just a few days ago but the previews have been around for months) so I won't rehash.
Instead, I'd like you to take another look at that first picture, a picture of what HTML markup looks like in the land of Perfect:

When I see markup like that, well, in the words of Led Zeppelin:
Hey, hey, baby, when you walk that way
Watch your honey drip, cant keep away.
The above is actual markup generated by an ASP.NET MVC website. It's still ASP.NET—ASP.NET is now a superset which includes both the WebForms and the MVC paradigm within it—it's just not ASP.NET WebForms.
And it's clean. It's tight. It can be applied from the ground up, or grafted into an existing ASP.NET WebForms application. It's works with AJAX. You can still use server controls. You still have a design surface. Master pages. User controls. All that stuff still applies, if you want it.
But it puts you back in the driver's seat, rather than driving you around in the back seat. In the words of Scott Hanselman:
I like to think of ASP.NET MVC as the raw, acoustic version of the more heavily produced and multi-layered ASP.NET WebForms we use today.
Though when it comes to that, I like to think of ASP.NET MVC as more of an electric guitar, and you, the programmer, are the guy rocking out a Machiavellian riff with his shirt off, hair flying every which way, crowd-surfing, making love to the floor, whatever. And ASP.NET WebForms is the full 32-track 88-key digital production workstation with virtual instruments, effects, and those nifty little LED readouts.

But don't use ASP.NET MVC just because it's sexiest thing since sliced bread. Don't use ASP.NET MVC because it's what will get you the girls, even though I promise you it will. Use it because it works. It works so well that I've made a promise to myself and I hope it's one you can get on board with:
I will never again embed a form tag into a web page that's not intended to be submitted.
If that, if on nothing else, we should be able to agree.
Rock on?
Use the form below to leave a comment.
- Of Gravatars and Robohashes
- Optimizing VP$IP
- A Question of VP$IP
- John Carmack: Script Interpreters Considered Harmful
- Movie Doppelgangers: B-Movie Ripoffs of Hollywood Blockbusters
- BROWSE ALL POSTS
Subscribe to Coding the Wheel over email or through any RSS reader. Coding the Wheel has been published since 2008.
- How I Built a Working Online Poker Bot, Part 1, 2, 3, 4, 5, 6, 7, 8
- Summoning the Harry Potter MMORPG
- Are Commercial Databases Worth It?
- 21 and the Monty Hall Paradox
- Online Poker and the Multi-Tabling Effect (34)
talia wrote: Ping G15 Fairway Wood Mizuno MP 53 Irons Mizuno MP 68 Irons Mizuno MX 1000 Irons ... - Online Poker and the Multi-Tabling Effect (34)
talia wrote: Ping G15 Fairway Wood Mizuno MP 53 Irons Mizuno MP 68 Irons Mizuno MX 1000 Irons ... - The Coin Flip: A Fundamentally Unfair Proposition? (92)
carla wrote: great post Thanks for sharing! [mutui][1] [1]: http://www.finmutui.it/ "mutui" ... - Summoning the Harry Potter MMORPG (1593)
AmberTheHarryPotterNumber1Fan wrote: Oh Does anyone know when it will come out? - Full Tilt Color Coding In Twenty Minutes or Less (34)
Timber Decking wrote: [url=http://www.deck-max.com.au/]Timber Decking[/url] [url=http://www.timberdeckingsydney.net.au/]Timber ... - Summoning the Harry Potter MMORPG (1593)
Tekken9 wrote: There is no game, at least not yet. - The Programming Aphorisms of Strunk and White (90)
parkeren wrote: So that we will follow and what shall be the first step to do so, because everyone will like this software ... - Online Poker and the Multi-Tabling Effect (34)
Anonymous wrote: This was an entirely new concept that Titleist Japan & Titleist US worked together on to create. They ... - Summoning the Harry Potter MMORPG (1593)
AmberTheHarryPotterNumber1Fan wrote: How do i play the Game? ;{ - The Coin Flip: A Fundamentally Unfair Proposition? (92)
maria wrote: i like this article and got info.this is very nice and popular site ,it site have informative and intrusting ... - The Coin Flip: A Fundamentally Unfair Proposition? (92)
Brian wrote: This is fascinating. I wonder if there's a similar bias vis a vis the coin flip during a football ... - Movie Doppelgangers: B-Movie Ripoffs of Hollywood Blockbusters (14)
Brian wrote: This is certainly not a hollywood blockbuster [dating site][1] [1]: http://www.basecandy.com/ ... - Movie Doppelgangers: B-Movie Ripoffs of Hollywood Blockbusters (14)
Brian wrote: Singles looking for [dating websites][1] can join now. [1]: http://www.basecandy.com/ ... - Full Tilt Color Coding In Twenty Minutes or Less (34)
Photo booth san diego wrote: Appreciate your making the effort to discuss this, I find myself strongly about this and love mind ... - Of Gravatars and Robohashes (20)
rake wrote: [rake][1] you provide the nice information , gravaters are amazing [1]: http://www.rakebackrage.com/ ... - The Programming Aphorisms of Strunk and White (90)
Steve Waters Vancouver wrote: A random act of kindness! - Movie Doppelgangers: B-Movie Ripoffs of Hollywood Blockbusters (14)
Bradly wrote: Battle: LA was a great movie (the new one that is). I have noticed a lot of very similar movies, mostly ... - Summoning the Harry Potter MMORPG (1593)
Shawn wrote: Haha, these photos are classic! I'm actually not a fan of the Harry Potter movies but I do play ... - A Word About Authenticity (57)
Shawn wrote: Being authentic is very important. If I'm playing poker against a bot and it goes all in on a 2, ... - Coding the Tweet: Building a Custom Branded Twitter Application (71)
Shawn wrote: Using Twitter to promote a business is extremely popular today. I actually found a place to train ...

33 comment(s)
If MVC was around back in the day, maybe I would not have given up Microsoft development for good. Now that I've tasted Linux and Mac, there's really no going back though.
I'd use anything if it got me the girls. So screw any other reason ASP.NET MVC is for me!
Lovely stuff. Can't wait to get started.
Thanks for the post!
Cool, I may just give MVC a spin, in this case.
Good writeup on cleaning up ASP.NET.
An interesting implementation using MVC is Kigg - a Digg clone although what is on Codeplex doesn't work with the latest releases. I have a (somewhat) working version out at http://www.theburnlist.com/
Keep the good pokerbot stuff coming!
Dave
The Kigg demo is a good one. I looked at this back in Preview...3? 4?
http://www.codeplex.com/Kigg
Rob Conery also has an excellent MVC storefront sample:
http://blog.wekeroad.com/mvc-storefront/mvc-storefront-part-1/
And for those who are just getting started, the TaskList demo is a good introduction:
http://www.asp.net/Learn/mvc/tutorial-01-cs.aspx
I hate Led Zeppelin.
I love Led Zepplin.
Should we be scared as PHP Jockeys?
...Some people never wrote a form tag while building enterprise level web apps with rapid application development mvc frameworks like http://www.atk-framework.com/ (secret tip). I love Pet Shop Boys...and its not a shame ;-)
Great post. A little light on the information but I like that you've accentuated what to me is the selling point of ASP.NET MVC, that's CLEAN MARKUP. I could give a damn about test-driven development. I could give a damn about clean separation of concerns. Just let me output clean markup so my PHP buddies stop throwing stones.
PHP produces clean markup? Gasp. What version are you using?
Upvoted just for the pic of Jimmy Page
@Ed K.: PHP doesn't produce any markup on its own. Granted, the language itself looks horrible (even though I'd rather that instead of the mixed form\runat fest). At least it doesn't require HTML hacks like ASP.NET does out of the box.
It's great to see stuff like this around. Thanks for the post!
Has anyone else gotta a threatening email from Pokerstars about Coding the Wheel?
They threatened to break my knees.
It's been 20 days since this article was posted. About time for Daniel Radcliffe to start posting here again. He still hasn't told us if he's boned the chick who plays Hermione yet.
I really hope this website is not dead, but without a post in the last month I fear the worst. RIP Coding the Wheel?
I'm hoping he's off on some secret mission...
JagBot - PokerStars sent you an email?
I spent about 2 mos part time building off of the stuff here and I'm at the point where the entire gamestate in pokerstars is captured in a class. So I have all of the communication and game logic in there. But have been stagnating on the poker part of it.
Which leads me to my point... In lieu of creating an entire bot that plays for you unattended, it may be better to just make an assistance bot. Something that allows you to play more tables. So if you are a guy who can play 4 tables comfortably, you can make a preflop only bot so you can play 12 tables. That way you are always at the computer and you don't have to worry about CAPTCHA.
this post, dont dead.
go jamesss
Lost my last 25 bucks, while playing drunken ;-)
...but now Im really able to hit the micros.
Will reaching homless state ;-)...
...so where are the news about building a pooker bot?
...of course Im doing some seriouse cooding stuff too. ;-)
c. u.
Dude! Where are you? It's been almost two months!
2+2 forum members kidnapped him...
Would believe he is catched by some poker vendors with an offer could not be rejected ;-)...hu hu hu.
Two full months... I hope you're doing good and just decided to stop posting for a while for whatever reason. Take care.
Or the greatest bluff of James D. whuah ha ha...
merry christmas feliz navidad
from peru
james devlin.
Geez, you're in PERU? Well, Merry Christmas anyways!
This page will be the last one I'm affraid : Well it was good the time this site was alive.
Thanks for the tips :)
Regards
Quote from Tenascious-D: KG: Dude, now that we have the album out ... will it make us more popular ... with the ladies? Jack: Ahh, yah.
Hi, listen, I'm pretty new on this blogosphere and Internet thing, so I don't know if there's a sort of "subscription" method that I can use xlpharmacy in order to receive notifications of your new entries...? Thing is I enjoy reading your blog a lot and I'd like to be up to date with your posts!