【发布时间】:2014-04-30 20:42:15
【问题描述】:
我最近将一个 ASP.NET MVC 项目从 v3 更新到 v4,现在我的 .cshtml Razor 视图在 Visual Studio 中编辑时失去了智能感知。关键字和辅助属性(例如 @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 出于任何原因无法找到 web.config 中指定的用于 Razor 智能感知的程序集。我通过 NuGet 安装了 ASP.NET MVC 4 引用,并仔细检查了我引用的所有程序集都是正确的版本。我已经尝试重新安装 MVC 包,并且尝试过多次清理和重建。
在此先感谢您提供有关如何使其正常工作的任何建议。目前这确实妨碍了我的工作效率。
【问题讨论】:
-
@我也有类似的问题,重新安装 MVC 框架在我的情况下工作,
-
你尝试过官方发行说明中的所有内容吗? asp.net/whitepapers/mvc4-release-notes#_Toc303253806
-
@deerchao - 感谢您的链接 - .csproj 文件中 GUID 的更改解决了该问题。
-
很高兴它有帮助。您是否有机会住在中国北京并正在寻找新工作?如果您有兴趣,我正在招聘一位我认为您符合您的 stackoverflow 个人资料的资格。
-
我在英国,恐怕离北京很远!
标签: asp.net-mvc visual-studio-2010 asp.net-mvc-4 razor