I've a project in MVC 3. It works perfectly and each time I build it, it succeeds. However, Visual Studio insist in showing compile errors in views in each razor syntax. For example:
The name 'model' does not exist in the current context D:\ ... Detail.cshtml
That line is simple:
@model Namespace.DetailViewModel
I've already tried:
- Cleaning solution
- Cleaning solution and deleting
bin
and obj
folders.
- Closing VS and reopening it (even with a reboot in the middle).
Note: I'm using Visual Studio 2012.
I've solved it!
The project was created when the computer didn't have MVC 4 installed yet. After installing it, for some reason, it kept working (despite this).
So what I did was make the changes that should be made in MVC 3 project after installing MVC 4: see here
After that, it compiled and the errors disappeared, however there was an error with the versions of some libraries (System.Web.WebPages
, System.Web.WebPages.Razor
, and some others). That turned out to be because they had Copy Local
set to True
. After changing that everything started working great.
Open your web.config file located inside of Views folder and add this section if it's missing:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>