有没有办法让MVC4的捆绑系统在调试模式下只包含脚本/样式 ?
例如,我有很多调试模式脚本可以帮助我调试我的系统。当系统处于发布模式时,我显然不希望它们被渲染。
我想过使用像:
这样的块 bundles.Add(
new ScriptBundle("mybundle")
.Include(
"~/scripts/foo.js",
"~/scripts/bar.js"
#if DEBUG
,"~/scripts/baz-debug.js"
#endif
)
);
但应通过web.config
控制调试模式。
那么正确的方法是什么?
答案 0 :(得分:2)
要检查调试是否已启用,您可以使用:
HttpContext.Current.IsDebuggingEnabled
前提是可以访问HttpContext。如果没有,那么这个方法就越长:
var isDebug =(System.Web.Configuration.CompilationSection)ConfigurationManager.GetSection("system.web/compilation").Debug;
这些建议都来自本文:How do I check if Debug is enabled in web.config。
实际上有条件地添加模块的做法是从创建Dictionary<string, bool>
脚本路径开始,以及是否应该在发布模式下添加它们。
当您调用程序时,如果调试为false,则只需将字典过滤为元素集合:
var includes = dict.Where(x => x.Value).Select(x => x.Key);
然后将结果传递给您的Include
语句。