我最近将一个ASP.NET MVC项目从v3更新到了v4,现在在Visual Studio中进行编辑时,.cshtml Razor视图丢失了智能感知功能。关键字和辅助属性(例如@ model,@ Url,@ Html等)无法识别,并且在VS中产生错误。运行后,该应用程序本身可以正常运行。
我尝试了来自各种在线资源(包括SO)的建议解决方案,其中大多数涉及对web.config的调整。我已经看过它们了,我很确定我的配置设置对于MVC 4是正确的:
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.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=4.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.Optimization"/>
<add namespace="System.Web.Routing" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.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>
</configuration>
现在,我进行了一些观察,这使我对问题可能出在哪里有了一个清晰的认识。如果我通过我的web.config并将对MVC 3的引用(即MVC从版本4.0还原到3.0,将Razor / WebPages从2.0还原到1.0),我的智能感知又回来了(但是很明显,这使我无法运行应用程序)。
我认为我可能存在安装问题,并且出于任何原因,Visual Studio都无法出于Razor intellisense的目的而在web.config中找到指定的程序集。我通过NuGet安装了ASP.NET MVC 4参考,并且我再次检查了所有我引用的程序集是正确的版本。我尝试过重新安装MVC软件包,并且尝试过几次清理和重建。
在此先感谢您对我如何进行这项工作提出的任何建议。目前,这确实妨碍了我的工作效率。
适用于我的解决方案(摘自http://www.asp.net/whitepapers/mvc4-release-notes的发行说明):
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句