ASP.NET MVC Roadmap

This is a high-level roadmap for ASP.NET MVC featuring the areas we are investigating. We will continually update this as we post releases to the CodePlex site.

ASP.NET MVC 3

Preview 1 (released 7/27/2010)
In Preview 1, we released the following features
  • Razor View Engine - a new http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx.
  • Multple View Engine Support - Add View dialog now supports choosing a view engine and adding custom view engines.
  • Validation Improvements - Support for more validation attributes such as the new ones introduced in ASP.NET 4.
  • Dependency Injection at all levels - We opened up seams for applying the dependency injection when instantiating components of the framework. This allows developers to hook into the creation of models during model binding, action filters, etc.
  • Dynamic View and ViewModel Properties - These dynamic properties provide syntactic sugar to setting and accessing ViewData values making controller and view
  • Global Action Filters - allows registering action filters that apply to all ASP.NET MVC requests. This removes the need to apply a filter attribute on every controller.
  • Support for Permanent Redirects - We've added new overloads for permanent redirects which issue a 301 HTTP status code instead of a 302.

Post Preview 1
  • Add View Dialog Improvements - Continuing the work started in Preview 1, we'll improve the support for third party view engines and implement an improved UI for type selection when selecting a model for a strongly-typed view.
  • New Project Dialog Improvements - When creating a new ASP.NET MVC Project, the New Project Dialog will support choosing a view engine.
  • VBHTML Support - This will allow for using the VB.NET version of the Razor syntax in a Razor view.
  • Tasked based helpers - These helpers focus on tasks that commonly come up when building web applications such as adding a CAPTCHA to a site or providing a sortable, pageable grid of data.
  • Improved Caching Support - Enable caching of an child action when called via the RenderAction method which provides better caching granularity.
  • More Control Over Session - Support for granular session state as well as turning session state on and off on a per action/controller basis for improved scalability.
  • More Dependency Injection Seams - We'll continue the work we did in Preview 1 to open up more DI seams based on your feedback to provide extreme extensibility when building ASP.NET MVC applications.
  • Porting MVC Script Libraries to jQuery - ASP.NET MVC 3 will use jQuery and jQuery validation in an unobtrusive manner. This will streamline the number of scripts needed for a responsive Ajaxified MVC application.
  • Razor View Engine Improvements - Will add support for _init.cshtml files which can be used to reduce duplication in views. Also adding support for @model as a succinct means of specifying a strongly typed view.
  • And more!

Runtime
ASP.NET MVC 3 runtime requires ASP.NET 4 and tooling requires Visual Studio 2010.
Last edited Tue at 6:32 PM by Haacked, version 41
Comments
pierslawson Mar 22 2008 at 4:44 PM 
Are you looking at putting in support for asynchronous handling of Actions?

ScottGal Apr 3 2008 at 5:40 PM 
Not in 1.0 but we're looking at it for a later release.

SteveSanderson Jun 9 2008 at 10:09 PM 
ScottGu said validation was coming soon. Is that still the plan?

shijucv Nov 13 2008 at 2:58 AM 
A separate view engine for ASP.NET MVC instead of current WebForm view engine and a better way to handle partial requests would be great additions.

jrista Jan 14 2009 at 5:16 AM 
Will there be any any support for view areas, such as what Monorail has? Sometimes more than one path level is required to adequately organize views.

inrie Feb 11 2009 at 3:15 AM 
Is this will be implemented in the v1.0?

kazimanzurrashid Feb 15 2009 at 9:40 PM 
>>>>>>Sessionless controllers - Allow controllers to not use session state on a controller by controller basis (without this, you can turn session on or off for the entire site)
Not sure about this, I can use an EmptySessionDataProvider and turn off the session in web.config from i guess from Beta4.

softlion Feb 28 2009 at 8:36 AM 
Subcontrollers are really missing to create components, or I've missed something that is not in the quickstarts. Of course we can still use Html.RenderAction("actionName","ControllerClass",...) in asp.net mvc futures and I can understand why that design is not satisfactory.

ajma May 14 2009 at 6:06 PM 
Are the features in the 2009 roadmap scheduled for .net framework 4.0? or out of band? or "nothing to announce right now"?

kenpachi May 30 2009 at 9:48 PM 
I'm not sure if Sub Controllers are what I'm thinking about, but what about a feature where you can group different web applications / modlues / components in a project. For example right now I am working on a CMS system that I will base most of my sites off of. Currently the CMS's controllers, models, views are all mixed together with the site. How about a way to separate these applications in folders such as "blog", "forum", "CMS", or whatever that would contain the necessary modules, controllers. vews. css, javascript,, etc..., so they are easier to share, maintain and deploy. Possibly making them easy to deploy as a dll as well.

jeffreypalermo Jun 7 2009 at 1:05 AM 
Phil,
Thanks for posting this information. Roadmap looks great!

jglozano Jun 7 2009 at 3:19 AM 
this looks great, Phil! Can't wait to get a hold of the bits and tooling!

coldacid Jun 9 2009 at 6:28 PM 
Not going to add something for rendering partials to strings in 2.0? I know there's code out there for doing it now, but it's hackish and fails in odd ways when you try and use helpers in those partials. It would be best to have it built in to the framework instead, and functioning properly across the board.

eazel7 Jun 9 2009 at 7:44 PM 
maybe you can incorporate my strongly-typed action route helper

http://blogs.southworks.net/dperez/2009/05/09/mvc-strongly-typed-action-route-helper/

thanks!

mteper Jun 11 2009 at 3:11 AM 
What about i18n?

fix3r Jun 15 2009 at 6:04 AM 
I think a full end to end validation framework is critical for the enterprise. We need to have a validation framework thats can be defined once and can be re-used throughout the layers, UI, Controllers and Models.
This will also touch on the productivity areas...NO repetition of validation code which is so common in development.

DanAtkinson Jun 15 2009 at 11:53 AM 
Just to clarify... Is the AsynchronousController an implementation of sub-controllers, or is that something else? :)

littlecharva Jul 21 2009 at 3:37 PM 
It would be nice if you could make more methods public instead of internal; especially involving the WebFormsViewEngine. It would be really useful to be able to extend that view engine, rather than having to create my own from scratch.

soelinn Jul 29 2009 at 7:04 PM 
It'd be nice if the "Add Controller" can be created on an existing Model Type from either Linq2Sql or Entity Framework object like how the "Add View" dialog allows strongly-typed Views be created based on a Model.
On top of that, I would like to be able to integrate that "Add Controller" template with the T4 so I can do some additional customizations based on the specified Model.

dbau56789 Aug 4 2009 at 5:16 AM 
The laundry list above is nice, but I hope that the ASP.NET MVC team has not forgotten about probably the most useful control in the ASP.NET toolbox...The GridView. Namingly, a sortable grid helper is essential to widespread adoption. As of 1.0 implementing this feature is not trivial. There is a way using MVCContrib, but it ugly. jQuery only works if you have a small result set. We need something that interact with the controller and we need it out of the box. Until this is available, my development teams will not be able to adopt ASP.NET MVC.

dmonlord Aug 11 2009 at 1:44 PM 
You have to add something like http://aspmvccombine.codeplex.com/
It's .css and .js combine utility.

Usually it's easyer to just include bunch of javascript files to your views, but from performance side it's not.

So it would be great if I could write:
<script type="text/javascript" src="Script1.js"></script>
<script type="text/javascript" src="Script2.js"></script>
<script type="text/javascript" src="Script3.js"></script>

and I would get intellisense support for javascript (it will be better in VS2010, right?)

But the rendered page (View page source in browser) should get:
<script type="text/javascript" src="MinimizedAndCombinedScripts.js"></script>

and as the filename suggests this .js file should combine all my script includes and it should be minimized.


The problem with the aspmvccombine is that you loose intellisense and what Microsoft says it will improve intellisense support for Javascript. So the library and VS2010 don't get along quite well.

And another thing about intellisense. If you're making your own .js file, and let's say you're using jQuery in that file...You still loose the intellisense because jQuery cannot be referenced in .js file. Right? (But that's probably a Visual Studio issue).

All above should be considered for .css, too.

runxc1 Aug 28 2009 at 4:52 PM 
I am curious about the migration path from ASP.Net MVC to ASP.Net MVC 2? If I start a site now using MVC 1 what changes will be necessary to get it up and running in MVC2?

Albined Sep 5 2009 at 2:02 PM 
Will ASP.NET MVC 2 PREVIEW 1 support VS2010 BETA 1? if not please tell when will be release ASP.NET MVC 2 support file for VS2010.

cttoy Sep 15 2009 at 11:35 AM 
i am waiting the mvc 2 release

neildmoss Sep 17 2009 at 4:04 PM 
We're near the start of an MVC project.

Is there any statement of backwards compatibility for v2 in support of v1?

Is there an hoped-for release date for v2?

Thanks,
Neil.

hminaya Nov 5 2009 at 2:38 AM 
Any time-frame for the beta release?

guramrit Nov 30 2009 at 3:25 PM 
I'm excited about new features in ASP.NET MVC2 like areas, async controllers(prev. in MVC futures), client side validation etc.. I just want to suggest, that validation process should be flexible(loose coupled), So that we can plug our Validation Engine into Application, Like View Engines, Controller factories, Model Binders. In this way we can test and switch between different libraries easily. Script Generation on page with Html.EnableClientValidation() should be handled by Engine, default is jquery, but the choices are endless. I hope that my request 'll be considered... Thanx

Lakario Dec 16 2009 at 6:08 PM 
For the next release of MVC2 it would be really nice to see a Url.Action<TController>(Expression<Action<TController>> action) overload (similar to Html.ActionLink<TController>(Expression<Action<TController>> action, string linkText)). Also, FormExtensions.BeginForm<TController>(this HtmlHelper helper, Expression<Action<TController>> action) needs to be updated to support Areas. The controller action selected and invoked is ambiguous despite the strong typing because the method fails to emit the necessary RouteValueData for the area.

Keep up the awesome work!

abdulsattar Mar 12 at 10:22 AM 
Can't wait for MVC3 if it has got MEF support!!!

zowens Mar 12 at 1:37 PM 
Ditching ASP.NET AJAX in favor of jQuery would be really nice :)

jglozano Mar 12 at 2:24 PM 
I really like the pieces under the "Architecture" section of the roadmap :)

tburd Mar 12 at 4:51 PM 
PLEASE add the equivalent of Monorail Areas into the next version. I have some exceptionally large MVC projects, and grouping controllers into Areas (NOT the portable areas in MVC 2) would be really nice.

leriksen71 Mar 12 at 6:18 PM 
Strong Typed route helpers using func's for Action,ActionLink, BeginForm for v3 would be nice.

mspradley Mar 12 at 6:37 PM 
Better support for switching between http and https would be nice.

leriksen71 Mar 12 at 11:45 PM 
Almost forgot, inline ajax validators that can work on the 'blur' event of an imput would be cool too.

torkelo Mar 16 at 11:41 AM 
Please please make Spark or something like Spark apart of the framework it is such a superior view engine compared to the abysmal hack of a view engine that is the WebForms view engine.

leriksen71 Mar 18 at 7:33 PM 
Would also be great if there was a simple configuration setting that could be used to put all the asp.net mvc folders in a different location. For example, it should be easy to set something like 'MvcApplication.RootFolder = "app_mvc";' and then it would find everyting under the 'app_mvc' folder with no extra effort.

torarnev May 12 at 8:02 AM 
Could you please start to use a bit more detailed versioning strategy? We've had some issues with the 2.0.0.0 version since the Visual Studio installer puts the mvc in GAC. Try to run your mvc application with a specifiv older version of the 2.0.0.0 then...

AlexCopperfield May 13 at 3:53 PM 
Thumbs up for MEF Controller Factory.

fboriani May 28 at 7:40 PM 
improve better client validation for custom validation, focus on validation..
I hate to use <script src="<%=ResolveClientUrl("~")%>/Scripts/jquery.js" />.. I hope it gets better :D

rockon1119 Jun 3 at 12:43 AM 
With respect to dependency injection at all levels, is there a strong possibility of having controller factories for individual areas?

Dunross Jun 3 at 8:45 PM 
Think about using the new feature of C# 4.0 - named parameters - to simplify Views. Imagine this use of an Html helper: <%: Html.ActionLink("myAction","myController", title="someTitle", class="myClass) %>

pierslawson Jun 6 at 8:13 AM 
I would love to see your latest thinking on support RESTful web services (as seen in MVC Futures) in the next release. The xyz.Xml.ASPX approach is a great idea... if you could iron out the final wrinkles it would be a great way to turn out powerful web services simply. Where is that work heading?

runxc1 Jun 16 at 5:01 PM 
Reading over the road map makes me start salivating over MVC3. If MVC 3 has scaffolding and MEF/IOC baked in please tell me that there is nothing stopping you from injecting your favorite IRepository be it EF4, SubSonic, NHibernate, NoSQL etc into the Scaffolding so that your object gets persisted how you want it to with the default being something like EF4.

softlion Jun 28 at 9:36 AM 
It would be nice to fix the issue with RenderPartial("viewName",Model.Item) when Item is null and the partial view is strongly typed. It generates an exception because the model type is not the same as the type of the strongly typed view.

Updating...
© 2006-2010 Microsoft | Get Help | Privacy Statement | Terms of Use | Code of Conduct | Advertise With Us | Version 2010.7.20.17027