Har*_*til 3 .net c# asp.net-mvc razor asp.net-mvc-4
在ASP.NET MVC 4.5中完成的HTML5离线应用程序中,我们使用框架的内置功能捆绑和缩小样式和脚本.一切都适用于页面本身,但是为了写入Cache Manifest,在那里(因为我们正在编写它),它总是只发出捆绑的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"
));
}
Run Code Online (Sandbox Code Playgroud)
我们将它包含在我们_Layout.cshtml的页面本身中,如下所示:
@System.Web.Optimization.Scripts.Render("~/bundles/Scripts")
Run Code Online (Sandbox Code Playgroud)
当这非常适用于网页,通过发射单个js文件debug是true,和一个当捆绑文件debug是false.
输出 debug=true
<script src="/Scripts/ScriptOne.js"></script>
<script src="/Scripts/ScriptTwo.js"></script>
<script src="/Scripts/ScriptThree.js"></script>
Run Code Online (Sandbox Code Playgroud)
输出 debug=false
<script src="/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1"></script>
Run Code Online (Sandbox Code Playgroud)
这就是我们将脚本包含在我们的内容中的方法 CacheManifest
@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/Scripts")
Run Code Online (Sandbox Code Playgroud)
输出debug=true和debug=false
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
Run Code Online (Sandbox Code Playgroud)
我们想知道是否有一种方法可以像这样输出Cache-Manifest:
输出 debug=true
/Scripts/ScriptOne.js
/Scripts/ScriptTwo.js
/Scripts/ScriptThree.js
Run Code Online (Sandbox Code Playgroud)
输出 debug=false
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
Run Code Online (Sandbox Code Playgroud)
MSDN文档讨论了某种Scripts.RenderFormat方法,它看起来像是我们想做的事情的一个很好的候选者.但intellisense抱怨这种RenderFormat方法不存在于System.Web.Optimization当前引用的版本中.
但是,再次感谢Google,这里的答案就是解释说这种RenderFormat方法实际上已包含在下一版本的alpha版本中.对该答案的评论与解释我们如何安装它的页面相关联:
PM> Install-Package Microsoft.AspNet.Web.Optimization -Pre
Run Code Online (Sandbox Code Playgroud)
使用此版本,Cache-Manifest可以更改为:
@System.Web.Optimization.Scripts.RenderFormat("{0}","~/bundles/Scripts")
Run Code Online (Sandbox Code Playgroud)
而我们现在有缓存清单发出单个文件debug=true.
显然,MSDN文档与当前的稳定版本不同步!