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 streamlined view engine.
  • 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.

Beta  (released 10/6/2010)
  • 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 Dependency Injection - We'll continue the work we did in Preview 1 to open up more places within ASP.NET MVC where dependency injection can be applied. This will 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 _viewinit.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.
  • Granular ValidateInput – The ValidateInputAttribute now provides fine grain control over which form fields are validated as part of request validation. This enables an application to continue to use request validation, but also allow a specific text input to contain markup when posting to an action method.

RC

  • 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 Extensibility Improvements – Looking to improve the extensibility of the New Project Dialog by allowing custom templates to be added to the dialog.
  • Improved Caching Support - Enable caching of an child action when called via the RenderAction method which provides better caching granularity.
  • Remote Validator – Enables client validation to call validation code running on the server.
  • And More…


Runtime
ASP.NET MVC 3 runtime requires ASP.NET 4 and tooling requires Visual Studio 2010.

Last edited Oct 6, 2010 at 6:45 PM by haacked, version 43

Comments

lukeon Feb 24, 2011 at 9:58 AM 
Where can I find current roadmap for MVC 4? Are there plans to fix bugs with partial caching and cache profiles?

ChrisHoc Jan 18, 2011 at 4:20 AM 
I completely agree. Why can't m$ make a decent grid control? everytime I have to take over a project one of the first decisions we have to make is what third party grid control and reporting control are we going to use. We would happily pay M$ for them.

jemiller Dec 3, 2010 at 4:15 PM 
I whole heartedly agree with what dbau56789 had to say about there needing to be good Grid control. I would like to see the Grid be more functional than even what is in Web Forms. One thing that I would like is for it to in addition to supporting inline editing of existing items, it should also have an insert function like Telerik's RadGrid does. Also, it should have "in form" editing like Telerik. Grid IMHO is by far one of the most important controls. I.e. editing of collections shouldn't be overlooked. I would really like to switch to MVC, but, I need a good grid in order to do so. I.e. I need one that allows editing, not just read-only display. Also, I'm wondering why you need to specify the columns in WebGrid.GetHtml() rather than define them using the constructor of the control? Also, I noticed in the following that you can't specify something like "Person.Name" for a column name. I.e. the Model has a Person type with had a Name property. You should be able to drill down into other objects without having to flatten the query.

@{
WebGrid wg = new WebGrid(source: Model, canPage: true);
}
@wg.GetHtml(columns: wg.Columns(
wg.Column("Name"), wg.Column("Type"), wg.Column("Manufacturer"), wg.Column("Model"), wg.Column("WarrantyDaysLeft", "Warranty Days Left"), wg.Column("PersonId", "Person")))

CodeLake Nov 20, 2010 at 12:14 AM 
Scott, will this project have starter-kits like the ASP.NET starter-kits?

JoeAppiah Oct 29, 2010 at 2:15 PM 
Will MVC3 support WCF RIA services as in Silverlight 4? If not, definitely something to consider for MVC3. RIA services is great for productivity, while preserving scalability, security, etc. - MS needs to urgently support it across all key client development technologies, i.e, also MVC2&3, WPF and WebForms. My 2pence. Please see this article, in which a blogger attempts to do something similar for MVC2 access to RIA domain services. : http://geekswithblogs.net/bdiaz/archive/2010/04/03/using-ria-domainservices-with-asp.net-and-mvc-2.aspx.

He is not the first person attempting this, and i have wondered why not.

davidkuchar Oct 18, 2010 at 10:05 AM 
So based on this: "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."

will I be able to lose the MicrosoftAjax.js and MicrosoftMVCAjax.js files, and just use jQuery (while still using the Ajax helpers)? I would love to decrease my site's footprint...

Thanks!

Lenne231 Oct 11, 2010 at 3:11 PM 
I would really like to see a constructor of the MvcRouteHandler where i can inject my own ControllerBuilder (or something like a ControllerFactoryProvider) and a list of ViewEngines (or something like a ViewEngineProvider).
This would make the entire framework more flexible, so you could add a route with your custom MVCRouteHandler with its own controller factories and view engines.
You would be able to create web applications consisting of many diffrent mvc applications.

delkhov Sep 16, 2010 at 9:09 AM 
Please, add support to use .net code in js files.

It would be great to have included full localization web-site (resources+views+controllers+routes+dispay names+validation messages+js files)

TimCromarty Sep 14, 2010 at 9:56 PM 
Can you add an override to the default authentication behaviour so that is an ajax call reuired an unauthenticated user to log in, .Net returns the appropriate HTTP status code rather than a redirect to the login page

KingGudu Aug 26, 2010 at 7:01 PM 
Do not forget "Donut Hole Caching", please. It stopped working in MVC 2 and it was a great loss.

leriksen71 Aug 23, 2010 at 7:12 AM 
Any chance we'll see improved support for mult-project areas?

softlion Jun 28, 2010 at 10: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.

runxc1 Jun 16, 2010 at 6: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.

pierslawson Jun 6, 2010 at 9: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?

Dunross Jun 3, 2010 at 9: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) %>

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

fboriani May 28, 2010 at 8: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

AlexCopperfield May 13, 2010 at 4:53 PM 
Thumbs up for MEF Controller Factory.

torarnev May 12, 2010 at 9: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...

leriksen71 Mar 18, 2010 at 8: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.

torkelo Mar 16, 2010 at 12:41 PM 
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 13, 2010 at 12:45 AM 
Almost forgot, inline ajax validators that can work on the 'blur' event of an imput would be cool too.

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

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

tburd Mar 12, 2010 at 5: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.

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

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

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

Lakario Dec 16, 2009 at 7: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!

guramrit Nov 30, 2009 at 4: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

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

neildmoss Sep 17, 2009 at 5: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.

cttoy Sep 15, 2009 at 12:35 PM 
i am waiting the mvc 2 release

Albined Sep 5, 2009 at 3: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.

runxc1 Aug 28, 2009 at 5: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?

dmonlord Aug 11, 2009 at 2: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.

dbau56789 Aug 4, 2009 at 6: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.

soelinn Jul 29, 2009 at 8: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.

littlecharva Jul 21, 2009 at 4: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.

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

fix3r Jun 15, 2009 at 7: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.

mteper Jun 11, 2009 at 4:11 AM 
What about i18n?

eazel7 Jun 9, 2009 at 8: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!

coldacid Jun 9, 2009 at 7: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.

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

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

kenpachi May 30, 2009 at 10: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.

ajma May 14, 2009 at 7: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"?

softlion Feb 28, 2009 at 9: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.

kazimanzurrashid Feb 15, 2009 at 10: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.

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

jrista Jan 14, 2009 at 6: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.

shijucv Nov 13, 2008 at 3: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.

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

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

pierslawson Mar 22, 2008 at 5:44 PM 
Are you looking at putting in support for asynchronous handling of Actions?