以下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>
呈现页面时,会发生以下错误。由于某种原因,无法识别@Scripts和@Styles命令。如果我在文件中键入“@Scripts”,则Intellisense不会显示/显示命令。该项目确实引用了System.Web.Optimization,它在Bundle.config中使用。
什么可能导致@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 Line:6
显示详细的编译器输出:
显示完整编译源:
答案 0 :(得分:124)
确保项目中已引用System.Web.Optimization.dll
程序集,并且<add namespace="System.Web.Optimization"/>
名称空间已添加到~/Views/web.config
文件(不是~/web.config
文件):< / p>
<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中,因此请确保它已安装在项目中(使用Internet模板在Visual Studio中创建新的ASP.NET MVC 4项目时)这个NuGet会自动添加到项目中。)
答案 1 :(得分:4)
如果您正在使用捆绑包(如相关示例中所示),您可能还需要将捆绑配置添加到您的应用中:
将Bundle Config添加到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);
答案 2 :(得分:3)
项目中有两个webconfig文件......它们都需要
<add namespace="System.Web.Optimization"/>
答案 3 :(得分:2)
在我的情况下,我不得不将我的项目目标框架从4.5更改为4.5.1。
答案 4 :(得分:2)
如上所述here:
打开文件夹:Users \(user)\ AppData \ Local \ Microsoft \ VisualStudio(version)
删除文件夹:ComponentModelCache
重新启动Visual Studio(重新创建ComponentModelCache并解决问题)
答案 5 :(得分:1)
我在这里找到了答案enter link description here
显然你需要从root web.config中添加web.optimization。
答案 6 :(得分:0)
1。。确保在项目的“引用”中重新发行了System.Web.Optimization dll。 如果没有,请使用NuGet(软件包管理器控制台)进行安装:
Install-Package Microsoft.AspNet.Web.Optimization
2。。将System.Web.Optimization命名空间添加到“视图” web.config:
<system.web.webPages.razor>
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Optimization"/>
</namespaces>
</pages>
</system.web.webPages.razor>
3。。如果问题仍然存在,请尝试关闭/重新打开Visual Studio以刷新缓存。