C# ASP.NET MVC 4绑定-调试模式下的单个文件URL 问题:
在ASP.NETMVC4.5中完成的HTML5离线应用程序中,我们使用框架的。一切都可以很好地处理页面本身,但对于写入缓存清单,在缓存清单中(因为我们正在编写它),它总是只发出绑定的URL 因此,我们无法在脱机模式下调试JavaScript,因为单个调试js文件没有进入应用程序缓存 代码: 注册债券 这就是我们的C# ASP.NET MVC 4绑定-调试模式下的单个文件URL 问题:,c#,.net,asp.net-mvc,razor,asp.net-mvc-4,C#,.net,Asp.net Mvc,Razor,Asp.net Mvc 4,在ASP.NETMVC4.5中完成的HTML5离线应用程序中,我们使用框架的。一切都可以很好地处理页面本身,但对于写入缓存清单,在缓存清单中(因为我们正在编写它),它总是只发出绑定的URL 因此,我们无法在脱机模式下调试JavaScript,因为单个调试js文件没有进入应用程序缓存 代码: 注册债券 这就是我们的BundleConfig.RegisterBundles的外观: // For more information on Bundling, visit http://go.mic
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标记
我们将其包含在\u 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>
<script src="/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1"></script>
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
/Scripts/ScriptOne.js
/Scripts/ScriptTwo.js
/Scripts/ScriptThree.js
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
缓存清单
这就是我们如何将脚本包含到我们的CacheManifest
@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/Scripts")
在debug=true
和debug=false
中输出
<script src="/Scripts/ScriptOne.js"></script>
<script src="/Scripts/ScriptTwo.js"></script>
<script src="/Scripts/ScriptThree.js"></script>
<script src="/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1"></script>
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
/Scripts/ScriptOne.js
/Scripts/ScriptTwo.js
/Scripts/ScriptThree.js
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
我们想要什么?
我们想知道是否有一种方法可以让缓存清单像这样输出:
@System.Web.Optimization.Scripts.Render("~/bundles/Scripts")
在debug=true中输出
<script src="/Scripts/ScriptOne.js"></script>
<script src="/Scripts/ScriptTwo.js"></script>
<script src="/Scripts/ScriptThree.js"></script>
<script src="/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1"></script>
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
/Scripts/ScriptOne.js
/Scripts/ScriptTwo.js
/Scripts/ScriptThree.js
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
在debug=false中输出
<script src="/Scripts/ScriptOne.js"></script>
<script src="/Scripts/ScriptTwo.js"></script>
<script src="/Scripts/ScriptThree.js"></script>
<script src="/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1"></script>
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
/Scripts/ScriptOne.js
/Scripts/ScriptTwo.js
/Scripts/ScriptThree.js
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
讨论了某个Scripts.RenderFormat
方法,该方法看起来很适合做我们想做的事情。但intellisense抱怨当前引用的System.Web.Optimization
版本中不存在此RenderFormat
方法
但是,感谢谷歌(再次)解释说,这个RenderFormat
方法实际上已经包含在下一版本的alpha版本中。链接到说明如何安装的页面:
PM>安装软件包Microsoft.AspNet.Web.Optimization-预安装
使用此版本,缓存清单
可以更改为:
@System.Web.Optimization.Scripts.RenderFormat("{0}","~/bundles/Scripts")
现在,我们让缓存清单在debug=true
时发出各个文件
显然,MSDN文档与当前的稳定版本不同步