I have an existing project written in VS2010 which when loaded in VS2010 works perfectly.
When I load this same project in VS2013 the MVC Razor views contain lots of errors as if the config file is missing from the views folder.
It appears to have not loaded the Razor editor correctly using the config files from both the root and the views folder and instead gives me errors like ...
The name 'model' does not exist in the current context
and ...
'System.Web.WebPages.Html.HtmlHelper' does not contain a definition for 'LabelFor'
and no extension method 'LabelFor' accepting a first argument of type
'System.Web.WebPages.Html.HtmlHelper' could be found
(are you missing a using directive or an assembly reference?)
...
Any idea what would cause this?
Edit: Config files as requested ....
From main web.config file (not all of it as it's way too big to post)
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Ninject" culture="neutral" publicKeyToken="c7192dc5380945e7" />
<bindingRedirect newVersion="3.0.0.0" oldVersion="0.0.0.0-3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.EnterpriseLibrary.Validation" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect newVersion="5.0.505.0" oldVersion="0.0.0.0-5.0.505.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.ServiceLocation" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Config file in "~/Views/" ...
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<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" />
<add namespace="Emedia.Common.Mvc.Views.Helpers"/>
<add namespace="Emedia.Common.Mvc.Views.Extensions"/>
<add namespace="Emedia.Common.Utilities"/>
<add namespace="Emedia.Common.Utilities.Extensions"/>
<add namespace="Emedia.Common.Mvc.Controllers.Helpers"/>
<add namespace="Emedia.Resources.Service"/>
<add namespace="Emedia.Subscriber.Controllers"/>
<add namespace="Emedia.Subscriber.Controllers.ViewModels"/>
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
I have tried almost every solutions but did not get intellisense and at the end I found a solution:
.cshtml
file or any view fileTry setting the
CopyLocal
property of theSystem.Web.Mvc
reference totrue
. Sometimes this helps with Intellisense.In MVC 5 if you try to add an area by just adding a folder under Areas and sub folders for Controllers, Views, Models, etc. you won't have the *AreaRegistration.cs file that registers the area, or the web.config in views that enable VS to understand the razor elements that you include in your views. The result is that intellisense doesn't work in your view for things like ViewBag. If you have working examples of those files in other areas you can copy them in and update as appropriate - or you can start over with your Area by right clicking on Areas and doing an Add - Area which will create those files for you.
Update the NuGet Packages using Package Manager console in Tool, Library package Manager..
In command line..
PM> Update-Package
This will update NuGet packages and verify the current version of System.web.MVC and update this version in web.config file under Views folder.Close the solution and Reopen.
Hope this works !!!
A few of my projects had this issues for months. I tried so many workarounds and nothing worked. The issues seemed to be with the projects: the same project will have Intellisense issue across all PCs with Visual Studio. Finally I came through this post: http://www.dennisonpro.info/managing-intellisense-in-razor-views-with-mvc-5-using-custom-builds-in-visual-studio-2013/
In our case the cause was the output directory of all those projects were changed to other than "bin\". By changing the OutputPath back to "bin\" (and cleaning the project, closing then re-opening Visual Studio), I got Intellisense back.
The post referenced above also provided a workaround to maintain a separate output directory while still having Intellisense.
Hope this helps someone someday.
MS says that for VS2013 "Intellisense for Razor (CSHTML and VBHTML) files is limited to HTML markup."
But if you add these two lines inside each .cshtml the intellisense will work again for MVC3 in VS2013:
Instead of
dynamic
you can put your Model's type.