【问题标题】:ASP.NET MVC 4 Bundling - Individual File URLs in DEBUG modeASP.NET MVC 4 捆绑 - 调试模式下的单个文件 URL
【发布时间】:2013-01-30 14:52:59
【问题描述】:

问题:

在 ASP.NET MVC 4.5 中完成的 HTML5 离线应用程序中,我们使用框架的 built-in feature 捆绑和缩小样式和脚本。页面本身一切正常,但要写入缓存清单,其中(因为我们正在编写它)它总是只发出捆绑的 URL。

因此,我们无法在离线模式下调试 JavaScript,因为单个调试 js 文件没有进入应用程序缓存。

代码:

注册捆绑包

这就是我们的BundleConfig.RegisterBundles 的样子:

    // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/Scripts").Include(
                   "~/Scripts/*.js"
                   ));
    }

HTML 标记

我们将它包含在我们的_Layout.cshtml 中,用于页面本身,如下所示:

@System.Web.Optimization.Scripts.Render("~/bundles/Scripts")

这对页面很有效,当debugtrue 时发出单独的js 文件,当debugfalse 时发出一个捆绑文件。

debug=true中的输出

<script src="/Scripts/ScriptOne.js"></script>
<script src="/Scripts/ScriptTwo.js"></script>
<script src="/Scripts/ScriptThree.js"></script>

debug=false中的输出

<script src="/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1"></script>

缓存清单

这就是我们如何将脚本包含到我们的CacheManifest

@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/Scripts")

debug=truedebug=false 中输出

/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1

我们想要什么?

我们想知道是否有办法让 Cache-Manifest 像这样输出:

debug=true中的输出

/Scripts/ScriptOne.js
/Scripts/ScriptTwo.js
/Scripts/ScriptThree.js

debug=false中的输出

/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1

【问题讨论】:

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


    【解决方案1】:

    The MSDN documentation 谈到了某种Scripts.RenderFormat 方法,它看起来是做我们想做的事的好人选。但智能感知抱怨这个RenderFormat 方法在当前引用的System.Web.Optimization 版本中不存在。

    但是,再次感谢 Google,this answer here on SO 解释说这个RenderFormat 方法实际上包含在下一个版本的 alpha 版本中。 comment on that answer 链接到解释我们如何安装它的页面:

    PM> Install-Package Microsoft.AspNet.Web.Optimization -Pre
    

    使用此版本,Cache-Manifest 可以更改为:

    @System.Web.Optimization.Scripts.RenderFormat("{0}","~/bundles/Scripts")
    

    我们现在让缓存清单在debug=true 发出单个文件。

    显然,MSDN 文档与当前的稳定版本不同步!

    【讨论】:

      猜你喜欢
      • 2013-05-25
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      相关资源
      最近更新 更多