MVC and Umbraco integration

This question is really old and not relevant to the current versions of Umbraco.

Just in case anybody is still not aware - All versions of Umbraco since 2013 (6, 7 and now 8) support MVC


Having had a look at the blog post it seems that this is not actually integrated with Umbraco but working alongside Umbraco.

In that it is effectively its own HttpHandler. This means it is bypassing the Umbraco Httphandler and a whole bunch of Umbraco functionality relating to templates and the CMS itself.

Getting MVC to utilise Umbraco templates is (probably) not possible without modifications to the core application (in version 4+). However that doesn't mean you can't use MVC alongside Umbraco with Umbraco acting as a content repository for a MVC application.

You could easily create MVC controllers which pulled data from Umbraco and made that available to your views. For example you could use Umbraco Linq2Umbraco for this.

If you give more details as to the precise errors you are getting and exactly what you are trying to achieve, it may be the solution is in how you structure your application rather than attempting to brute force Umbraco 4+ to do something that will be native in Umbraco 5 (which is scheduled for release some time this year). The source code for 5 is on Codeplex and may be a good place to have a look and see how the Umbraco core team are approaching this.

There is an old discussion about this here: http://forum.umbraco.org/yaf_postst5106_Using-ASPNET-MVC-with-Umbraco.aspx

and more recently here: http://our.umbraco.org/forum/getting-started/installing-umbraco/2668-Use-Umbraco-with-aspnet-MVC

Further discussion can be found here: http://our.umbraco.org/forum/developers/extending-umbraco/17523-Umbraco-461-and-MVC-3

and even more here: http://our.umbraco.org/forum/developers/extending-umbraco/6837-Umbraco-Website-And-MVC-Website-In-ONE


Rather than trying to use the Umbraco controls, you might consider writing some HtmlHelper extension methods that use the umbraco.NodeFactory.Node class to obtain the content you're trying to display in your views. Writing methods that mimic (or simplify based on your needs) umbraco.presentation.templateControls.Item and umbraco.presentation.templateControls.Macro may be enough for you.

EDIT

I went down this path with some success. I also took a look at the MVC source to find out how partial views were being added to the underlying web forms controls collection. I ended up writing a class that inherits from the umbraco.presentation.templateControls.Macro class that looks a lot like the System.Web.Mvc.ViewUserControl class.