【问题标题】:ASP.NET MVC 4 Project - Razor intellisense has been lostASP.NET MVC 4 项目 - Razor 智能感知已丢失
【发布时间】: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


【解决方案1】:

我认为您需要 System.Web.Helpers 命名空间,可能还需要 System.Web.WebPages:

改变这个:

<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>

到:

<namespaces>
  <add namespace="System.Web.Helpers" />
  <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" />
  <add namespace="System.Web.WebPages" />
</namespaces>

【讨论】:

  • 不幸的是,这还没有解决。
【解决方案2】:

对我有用的解决方案(取自 http://www.asp.net/whitepapers/mvc4-release-notes 的发行说明):

  • 在解决方案资源管理器中,右键单击项目名称,然后选择卸载项目。然后再次右键单击该名称并选择 Edit ProjectName.csproj。
  • 找到 ProjectTypeGuids 元素并将 {E53F8FEA-EAE0-44A6-8774-FFD645390401} 替换为 {E3E379DF-F4C6-4180-9B81-6769533ABE47}。

【讨论】:

    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多