【问题标题】:Why are @Scripts and @Styles commands not be recognized in MVC4 Razor layout file?为什么在 MVC4 Razor 布局文件中无法识别 @Scripts 和 @Styles 命令?
【发布时间】:2013-01-17 21:33:32
【问题描述】:

以下 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 测试版 第 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

【问题讨论】:

    标签: asp.net asp.net-mvc razor asp.net-mvc-4


    【解决方案1】:

    确保您的项目中已引用了System.Web.Optimization.dll 程序集,并且已将&lt;add namespace="System.Web.Optimization"/&gt; 命名空间添加到您的~/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 中,因此请确保它已安装在您的项目中(当您使用 Internet 模板在 Visual Studio 中创建新的 ASP.NET MVC 4 项目时,此 NuGet 会自动添加到项目中)。

    【讨论】:

    • 对于那些使用 VS 2013 RC 的人来说,即使我按照达林的建议做了同样的错误。对我有用的是在此处完成标记答案后重新启动视觉工作室。
    • 在 VS 2015 中,您必须关闭在添加命名空间时打开的所有编辑器窗口,以便它们拾取它。 (他们必须为打开文件的窗口计算命名空间)
    • 我正确添加了命名空间,但没有显示出来,干得好,我在这里阅读了 cmets! :)
    • 如果您使用的是 VS 2017,请记住先添加配置条目并重新构建,然后重新启动 Visual Studio。为我工作
    【解决方案2】:

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

    将捆绑配置添加到您的 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);
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 或试试这个:在你的 view.cshtml 中包含优化命名空间并渲染包:@using System.Web.Optimization @Scripts.Render("~/Scripts/jquery") @ Scripts.Render("~/Scripts/knockout")
        【解决方案5】:

        我在这里找到了答案enter link description here

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

        【讨论】:

          【解决方案6】:

          here所述:

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

          2. 删除文件夹:ComponentModelCache

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

          【讨论】:

            【解决方案7】:

            1. 确保 System.Web.Optimization dll 在项目的参考中被重新引用。 如果没有,请使用 NuGet(包管理器控制台)安装它:

            Install-Package Microsoft.AspNet.Web.Optimization
            

            2. 将 System.Web.Optimization 命名空间添加到 "Views" 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 以刷新缓存。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-05-29
              • 2020-08-15
              • 1970-01-01
              • 1970-01-01
              • 2020-11-07
              • 1970-01-01
              • 1970-01-01
              • 2020-12-09
              相关资源
              最近更新 更多