为什么不能在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。
如此处所述:
-
打开文件夹:Users \(用户)\ AppData \ Local \ Microsoft \ VisualStudio(版本)
-
删除该文件夹:ComponentModelCache
-
重新启动Visual Studio(ComponentModelCache重新创build,问题消失)
我在这里find答案,在这里input链接描述
显然你需要从你的根web.config中添加web.optimization。