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

下面的MVC4 Razor布局文件加载了在Bundle.config中创build的几个脚本和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> 

页面呈现时出现以下错误。 出于某种原因,@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

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

System.Web.Optimization.dll程序集包含在Microsoft.AspNet.Web.Optimization NuGet中,因此请确保它已安装在项目中(当您在Visual Studio中使用Internet创build新的ASP.NET MVC 4项目时这个NuGet模板自动添加到项目中)。

如果您正在使用捆绑包(如上例所示),则可能还需要将捆绑configuration添加到您的应用中:

将Bundleconfiguration添加到您的App_Start文件夹:

 public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js")); bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( "~/Scripts/jquery.validate.js", "~/Scripts/jquery.validate.unobtrusive.js" )); bundles.Add(new StyleBundle("~/Content/css").Include( "~/Content/YourStyles.css")); #if DEBUG BundleTable.EnableOptimizations = false; #else BundleTable.EnableOptimizations = true; #endif } } 

将以下行添加到您的Global.asax.cs

 BundleConfig.RegisterBundles(BundleTable.Bundles); 

在你的项目中有两个webconfig文件…他们都需要

 <add namespace="System.Web.Optimization"/> 

就我而言,我不得不把我的项目的目标框架从4.5改为4.5.1。

如此处所述:

  1. 打开文件夹:Users \(用户)\ AppData \ Local \ Microsoft \ VisualStudio(版本)

  2. 删除该文件夹:ComponentModelCache

  3. 重新启动Visual Studio(ComponentModelCache重新创build,问题消失)

我在这里find答案,在这里input链接描述

显然你需要从你的根web.config中添加web.optimization。