为什么在MVC4 Razor布局文件中无法识别@Scripts和@Styles命令?

Chr*_*isP 41 asp.net asp.net-mvc razor asp.net-mvc-4

以下MVC4 Razor布局文件加载在Bundle.config中创建的多个脚本和css包.

<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
  <meta charset="utf-8" />
  <title>XXX Beta</title>
  @Scripts.Render(
  "~/bundles/bundle_jquery",
  "~/bundles/bundle_modernizr",
  "~/bundles/bundle_foundation",
  "~/bundles/bundle_jhs")
  @Styles.Render(
  "~/Content/bundle_foundation",
  "~/Content/bundle_jhs")
  @RenderSection("pageHeadContent", false)
</head>
<body>
  <div id="bodyContainer">
    @Html.Partial("Partial/_header")
    <div id="contentContainer">
      <div id="mainContentContainer">
        <div id="sidebarContainer">
          @RenderSection("sidebarContent", required: true)
        </div>
        @RenderBody()
      </div>
      <div class="clearBoth">
      </div>
    </div>
    @Html.Partial("Partial/_footer")
  </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

呈现页面时,会发生以下错误.由于某种原因,无法识别@Scripts和@Styles命令.如果我在文件中键入"@Scripts",则Intellisense不会显示/显示命令.该项目确实引用了Bundle.config中使用的System.Web.Optimization.

什么可能导致@Scripts和@Styles命令无法被识别?


'/'应用程序中的服务器错误.

编译错误

描述:编译服务此请求所需的资源时发生错误.请查看以下特定错误详细信息并相应地修改源代码.

编译器错误消息:CS0103:当前上下文中不存在名称"脚本"

来源错误:

第4行:第5行:XXX Beta第6行:@ Scripts.Render(第7行:"〜/ bundles/bundle_jquery",第8行:"〜/ bundles/bundle_modernizr",

源文件:c:\ Users\username\Documents\Visual Studio 2010\Projects\XXX\Solution\xxx.website\Views\Shared_sidebarLayout.cshtml行:6

显示详细的编译器输出:

显示完整编译源:

版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.272

Dar*_*rov 126

确保System.Web.Optimization.dll项目中已引用程序集,并且已将<add namespace="System.Web.Optimization"/>命名空间添加到~/Views/web.config文件(而不是~/web.config文件):

<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>
Run Code Online (Sandbox Code Playgroud)

System.Web.Optimization.dll组件包含内Microsoft.AspNet.Web.Optimization的NuGet,所以一定要确保它安装在你的项目(当你创建一个使用互联网的模板此的NuGet被自动添加到项目在Visual Studio中的一个新的ASP.NET MVC 4项目).

  • 对于那些使用VS 2013 RC的人来说,即使我做了达林所建议的,我也有同样的错误.对我有用的是在这里做了明确的答案后重新启动visual studio. (45认同)
  • 在VS 2015中,您必须关闭在添加命名空间时打开的所有编辑器窗口,以便它们进行提取.(他们必须为打开文件的窗口计算名称空间) (4认同)
  • 如果您使用的是VS 2017,请记住首先添加配置项和重建,然后重新启动Visual Studio.为我工作 (2认同)