加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ASP.NET MVC 4捆绑 – DEBUG模式下的单个文件URL

发布时间:2020-12-16 01:53:03 所属栏目:百科 来源:网络整理
导读:问题: 在ASP.NET MVC 4.5中完成的HTML5离线应用程序中,我们使用框架的built-in feature捆绑和缩小样式和脚本.一切都与页面本身配合良好,但是用于写入Cache Manifest,在那里(因为我们我们正在写它)它总是只发出捆绑的URL. 因此,我们无法在脱机模式下调试Java
问题:

在ASP.NET MVC 4.5中完成的HTML5离线应用程序中,我们使用框架的built-in feature捆绑和缩小样式和脚本.一切都与页面本身配合良好,但是用于写入Cache Manifest,在那里(因为我们我们正在写它)它总是只发出捆绑的URL.

因此,我们无法在脱机模式下调试JavaScript,因为各个调试js文件没有进入应用程序缓存.

码:

RegisterBundles

这就是我们的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")

这适用于页面,通过在debug为true时发出单个js文件,在debug为false时发出一个捆绑文件.

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 = true和debug = 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

解决方法

The MSDN documentation讨论了某种Scripts.RenderFormat方法,它看起来像是做我们想要的事情的好人选.但intellisense抱怨这个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文档与当前的稳定版本不同步!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读