- Properly testable and allows you to develop more elegant code.
- You are ‘forced’ to apply the MVC design pattern by the framework, so the only option is to have a properly defined data model + business logic layer (Model), presentation layer (View) and controller to manage their interaction.
- You also don’t have to deal with the ASPX page lifecycle.
- Because ASP.NET MVC is RESTful also, it can be used easily with jQuery/JSON, etc - the way the application is organised is more like a RESTful service. The ‘Views’ are like enhanced transforms, layered across the top of the service, that convert the dynamic application output into HTML (if that’s how you choose to define your View), rather than a series of concrete ‘pages’.
- Because of the way the URLs are put together (i.e. you mostly don’t need to use a suffix - like .aspx - especially under IIS7), the style is better aligned for web search engine optimisation.
- Web design is much easier - if you get a nice HTML page from a designer, it’s much easier to integrate with the application.
- You don’t end up with crazy HTML element names, view state in the page, etc - there appears to be much less ‘behind-the-scenes’ messing around with the output HTML by the ASP.NET process than there is with WebForms.
- It’s a different way of thinking than WebForms, from a Microsoft web-dev perspective - almost completely. So there’s a learning curve. When you get used to it however, it does seem more ‘natural’ approach than WebForms.
- It’s new, so although MVC version 1.0 is integrated into .NET 3.5 SP1 (although I understand MVC 2.0 is now available - with VS2010 Beta...?); you need to know a few special tricks to get things up and running in production. You need to download some ‘futures’ resources from CodePlex, etc.
- There are not that many people out there using it yet, so there’s less support and material out there, if you need help.