【问题标题】:Bundle script file not being rendered.捆绑脚本文件未呈现。
【发布时间】:2012-12-31 04:49:00
【问题描述】:

脚本文件名:

jquery.transit.min.js

文件在 Scripts 文件夹中,

bundles.Add(new ScriptBundle("~/bundles/jquery")
       .Include("~/Scripts/jquery-{version}.js"));

bundles.Add(new ScriptBundle("~/bundles/jqueryui")
       .Include("~/Scripts/jquery-ui-{version}.js"));

bundles.Add(new ScriptBundle("~/bundles/jqueryval")
       .Include("~/Scripts/jquery.unobtrusive*", "~/Scripts/jquery.validate*"));

bundles.Add(new ScriptBundle("~/bundles/jtransit")
       .Include("~/Scripts/jquery.transit*"));

在我的View

@Scripts.Render("~/bundles/jquery","~/bundles/jtransit")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jqueryval")

渲染HTML

<script src="/Scripts/jquery-1.8.3.js"></script>
<script src="/Scripts/jquery-ui-1.9.2.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>

jquery.transit.min.js 不会被渲染。我错过了什么?

【问题讨论】:

    标签: jquery asp.net-mvc resourcebundle


    【解决方案1】:

    就我而言,我尝试使用同名的脚本包和样式包。

    BundleConfig.cs:

    bundles.Add(new ScriptBundle("~/bundles/custom")
        .Include("~/Scripts/custom.js"));
    
    bundles.Add(new StyleBundle("~/bundles/custom")
        .Include("~/CSS/custom.css"));
    

    _Layout.cshtml:

    @Scripts.Render("~/bundles/custom")
    @Styles.Render("~/bundles/custom")
    

    这不起作用。配置中添加的最后一个包仍然存在,@Scripts.Render("~/bundles/custom") 只是呈现一个空行。

    我正在使用 MVC 5.2.3。

    【讨论】:

      【解决方案2】:

      如果以上问题都不能解决您的问题,那么您可能错过了这一行

      BundleConfig.RegisterBundles(BundleTable.Bundles);
      

      来自 Global.asax.cs 文件,如果您开始捆绑,请查看此站点: https://www.asp.net/mvc/overview/performance/bundling-and-minification

      【讨论】:

        【解决方案3】:

        在我的情况下,Visual Studio 2013 只是认为缺少捆绑 css 文件,它在解决方案资源管理器中的文件名上显示黄色问号。

        只需双击所有这些可能丢失的文件,Visual Studio 就会找到它们,黄色问号将标记为关闭,捆绑将再次开始工作。

        【讨论】:

          【解决方案4】:

          并确保您没有使用 IE 8。我在该浏览器中捆绑失败,但在 Chrome 或 Firefox 中运行良好。

          【讨论】:

          • bundles 是在服务器端创建的,所以浏览器应该没有区别
          【解决方案5】:

          我必须在 Application_Start 中执行此操作:

          BundleTable.EnableOptimizations = true;
          

          【讨论】:

            【解决方案6】:

            MVC4 开始,您的 JavaScript 文件或 CSS 文件的任何最小化版本在调试模式下都会被忽略。正如 ngm 建议的那样,您需要重命名您的文件,

            jquery.transit.min.js
            

            到,

            jquery.transit.js
            

            或者,您可以修改bundles.IgnoreList 以允许呈现最小化文件,如here 所示。

            【讨论】:

              【解决方案7】:

              我认为这是因为您的文件只有 .min 版本。

              从您的输出中,我可以看到您正在运行您的调试版本 地点。我想捆绑器正在寻找一个非缩小文件。

              如果您要进行发布构建,那么它将被捆绑在 OK 中。

              我建议获取传输文件的非缩小版本,然后 包括在您的 Scripts 文件夹中。做不到这一点,就做一个 缩小版本的副本,但文件名中没有 .min。

              【讨论】:

              • 无法相信 ASP.NET 使用了这个技巧。没有错误,只是默默地失败!!
              • 另外,如果捆绑虚拟路径包含一个点,它可以在开发期间工作,但不适用于已发布的站点。 bundles.Add(new ScriptBundle("~/Scripts/jquery.validate").Include("~/../Scripts/jquery.validate.*"));
              • 这解决了我的问题。没有任何线索,它只是没有包含脚本!我删除了 .min,一切都很好
              • 但为什么微软决定忽略捆绑最小文件?
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2018-12-18
              • 1970-01-01
              • 2016-09-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-11-20
              相关资源
              最近更新 更多