41

以下 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 不会显示/显示命令。该项目确实引用了 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

4

7 回答 7

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>

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

于 2013-02-02T19:19:05.807 回答
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);
于 2015-01-13T18:15:38.100 回答
3

您的项目中有两个 webconfig 文件...它们都需要

<add namespace="System.Web.Optimization"/>  
于 2016-01-24T16:18:07.433 回答
3

如此处所述:

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

  2. 删除文件夹:ComponentModelCache

  3. 重新启动 Visual Studio(重新创建 ComponentModelCache 并且问题消失)

于 2016-05-11T15:51:04.137 回答
2

就我而言,我必须将项目的目标框架从 4.5 更改为 4.5.1。

于 2015-12-23T04:53:30.010 回答
1

我在这里找到了答案 在此处输入链接描述

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

于 2016-04-20T13:57:39.603 回答
1

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 以刷新缓存。

于 2019-01-10T03:30:50.000 回答