asp.net-mvc - ASP.NET MVC 4 项目 - Razor 智能感知已丢失

标签 asp.net-mvc visual-studio-2010 asp.net-mvc-4 razor

我最近将一个 ASP.NET MVC 项目从 v3 更新到 v4,现在我的 .cshtml Razor View 在 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,我的 View 智能感知回来了(但显然这让我的应用程序无法运行)。

我想我可能有安装问题,而且无论出于何种原因,Visual Studio 都无法找到 web.config 中指定的程序集以用于 Razor 智能感知。我通过 NuGet 安装了 ASP.NET MVC 4 引用,并且我已经仔细检查了我引用的所有程序集都是正确的版本。我试过重新安装 MVC 包,我试过多次清理和重建。

预先感谢您提供有关如何使其工作的任何建议。目前这确实阻碍了我的工作效率。

最佳答案

我认为您需要 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>

关于asp.net-mvc - ASP.NET MVC 4 项目 - Razor 智能感知已丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23397644/

相关文章:

wpf - 为什么我的自定义 slider 在设计时不可见?

c# - 如何调整和保存使用 C# 中的文件上传控件上传的图像

javascript - AngularJS:跟踪在网络应用程序中花费的时间,然后在特定时间触发事件

c# - Scaffold-DbContext 无法构建,如何在 Nuget 控制台上解决此问题?

c# - 如何使用来自 t4 模板的 app.config 中的自定义部分

c# - MVC4 网格图片/图标

asp.net-mvc - 将 ViewBag 值分配给输入复选框?

c# - 将 MvcHtmlString 与 jQuery 模板一起使用 - 正确的 razor 语法是什么?

asp.net-mvc - Angular2 http post 无法捕获 Controller 操作

html - 如何自动在 Visual Studio 上按字母顺序排列 HTML 属性?