Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > C#/.NET技巧

asp.net Bundle功能扩展

来源:中文源码网    浏览:373 次    日期:2024-04-23 16:06:46
【下载文档:  asp.net Bundle功能扩展.txt 】


asp.net Bundle功能扩展
前言 新建Asp.net MVC4项目的时候,在Global.asax.cs里面发现多了一句代码 BundleConfig.RegisterBundles(BundleTable.Bundles) google了以后终于弄清楚了这个的作用,发现这个东西确实非常实用,且功能强大,能够压缩合并js和CSS,但是目前的使用起来不是特别好,如果添加js或者css文件的话,需要修改BundleConfig的代码。 这里我自己简单修改了BundleConfig,对这个进行简单的扩展。 下面贴出代码: 先贴配置文件BundleConfig.xml(文件放在网站目录下路径见代码中变量BundleConfigPath) 复制代码 代码如下: 代码文件:BundleConfig.cs 复制代码 代码如下: public class BundleConfig { public static string BundleConfigPath = "~/Config/BundleConfig.xml"; /// /// Register Bundles From XML /// /// public static void RegisterBundles(BundleCollection bundles) { XmlDocument doc = new XmlDocument(); doc.Load(HttpContext.Current.Server.MapPath(BundleConfigPath)); XmlNode root = doc.DocumentElement; // Regester Script XmlNodeList ScriptList = root.SelectNodes("Scripts/Script"); if (ScriptList != null && ScriptList.Count > 0) { foreach (XmlNode node in ScriptList) { string path = CheckNodeRegedit(node); if (string.IsNullOrEmpty(path)) continue; var bound = new ScriptBundle(path); List files = GetFilesFormNode(node); if (files.Count > 0) { bound.Include(files.ToArray()); bundles.Add(bound); } } } // Regester Style XmlNodeList StyleList = root.SelectNodes("Styles/Style"); if (StyleList != null && StyleList.Count > 0) { foreach (XmlNode node in StyleList) { string path = CheckNodeRegedit(node); if (string.IsNullOrEmpty(path)) continue; var bound = new StyleBundle(path); List files = GetFilesFormNode(node); if (files.Count > 0) { bound.Include(files.ToArray()); bundles.Add(bound); } } } doc = null; } /// /// 如果内容为空则不添加 /// /// /// private static List GetFilesFormNode(XmlNode node) { List files = new List(); foreach (XmlNode nodeFile in node.ChildNodes) { if (!string.IsNullOrEmpty(nodeFile.InnerText.Trim())) files.Add(nodeFile.InnerText.Trim()); } return files; } /// /// 检查注册的Node /// /// /// private static string CheckNodeRegedit(XmlNode node) { XmlAttribute pathAtt = node.Attributes["Path"]; string path = string.Empty; if (pathAtt == null || string.IsNullOrEmpty(pathAtt.Value.Trim()) || node.ChildNodes.Count == 0) return string.Empty; else return pathAtt.Value.Trim(); } }

相关内容