asp.net Bundle功能扩展
2012-11-26 00:00
591 查看
前言
新建Asp.net MVC4项目的时候,在Global.asax.cs里面发现多了一句代码
BundleConfig.RegisterBundles(BundleTable.Bundles)
google了以后终于弄清楚了这个的作用,发现这个东西确实非常实用,且功能强大,能够压缩合并js和CSS,但是目前的使用起来不是特别好,如果添加js或者css文件的话,需要修改BundleConfig的代码。
这里我自己简单修改了BundleConfig,对这个进行简单的扩展。
下面贴出代码:
先贴配置文件BundleConfig.xml(文件放在网站目录下路径见代码中变量BundleConfigPath)
代码文件:BundleConfig.cs
新建Asp.net MVC4项目的时候,在Global.asax.cs里面发现多了一句代码
BundleConfig.RegisterBundles(BundleTable.Bundles)
google了以后终于弄清楚了这个的作用,发现这个东西确实非常实用,且功能强大,能够压缩合并js和CSS,但是目前的使用起来不是特别好,如果添加js或者css文件的话,需要修改BundleConfig的代码。
这里我自己简单修改了BundleConfig,对这个进行简单的扩展。
下面贴出代码:
先贴配置文件BundleConfig.xml(文件放在网站目录下路径见代码中变量BundleConfigPath)
<?xml version="1.0" encoding="utf-8" ?> <root> <Scripts> <Script Path="~/bundles/jquery"> <File>~/Scripts/jquery-{version}.js</File> </Script> <Script Path="~/bundles/jqueryui"> <File>~/Scripts/jquery-ui-{version}.js</File> </Script> <Script Path="~/bundles/jqueryval"> <File>~/Scripts/jquery.unobtrusive*</File> <File>~/Scripts/jquery.validate*</File> </Script> <Script Path="~/bundles/modernizr"> <File>~/Scripts/modernizr-*</File> </Script> <Script Path="~/bb/aa"> <File>~/Views/Home/addda.js</File> </Script> </Scripts> <Styles> <Style Path="~/Content/themes/base/css"> <File>~/Content/themes/base/jquery.ui.core.css</File> <File>~/Content/themes/base/jquery.ui.resizable.css</File> <File>~/Content/themes/base/jquery.ui.selectable.css</File> <File>~/Content/themes/base/jquery.ui.accordion.css</File> <File>~/Content/themes/base/jquery.ui.autocomplete.css</File> <File>~/Content/themes/base/jquery.ui.button.css</File> <File>~/Content/themes/base/jquery.ui.dialog.css</File> <File>~/Content/themes/base/jquery.ui.slider.css</File> <File>~/Content/themes/base/jquery.ui.tabs.css</File> <File>~/Content/themes/base/jquery.ui.datepicker.css</File> <File>~/Content/themes/base/jquery.ui.progressbar.css</File> <File>~/Content/themes/base/jquery.ui.theme.css</File> </Style> <Style Path="~/Content/css"> <File>~/Content/site.css</File> </Style> </Styles> </root>
代码文件:BundleConfig.cs
public class BundleConfig { public static string BundleConfigPath = "~/Config/BundleConfig.xml"; /// <summary> /// Register Bundles From XML /// </summary> /// <param name="bundles"></param> 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<string> 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<string> files = GetFilesFormNode(node); if (files.Count > 0) { bound.Include(files.ToArray()); bundles.Add(bound); } } } doc = null; } /// <summary> /// 如果内容为空则不添加 /// </summary> /// <param name="node"></param> /// <returns></returns> private static List<string> GetFilesFormNode(XmlNode node) { List<string> files = new List<string>(); foreach (XmlNode nodeFile in node.ChildNodes) { if (!string.IsNullOrEmpty(nodeFile.InnerText.Trim())) files.Add(nodeFile.InnerText.Trim()); } return files; } /// <summary> /// 检查注册的Node /// </summary> /// <param name="node"></param> /// <returns></returns> 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(); } }
相关文章推荐
- ASP.NET 2.0功能扩展:跨页提交
- 为ASP.NET MVC扩展异步Action功能
- [ASP.NET 控件实作 Day3] 扩展现有服务器控件功能
- ASP.NET MVC HtmlHelper 自定义扩展分页功能
- Asp.net MVC Bundle 的使用与扩展
- FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。
- asp.net RadGrid分页功能扩展Demo
- UpdatePanel中GridView的分页问题 GridView中的超链接 (输入一半带提示功能)ASP.NET AJAX Control Toolkit 新扩展特性:AutoCompleteExtender
- Asp.net mvc 5 CRUD代码自动生成工具- vs.net 2013 Saffolding功能扩展
- 为ASP.NET MVC扩展异步Action功能(上)
- 扩展asp.net Bundle
- 利用CSS预处理技术实现项目换肤功能-(less css+asp.net mvc bundle)
- 为ASP.NET MVC扩展异步Action功能(下)
- [asp.net mvc 奇淫巧技] 05 - 扩展ScriptBundle,支持混淆加密javascript
- 扩展asp.net Bundle mvc4.0
- ASP.NET 3.5 扩展的社区预览版之一:新增功能简介
- 扩展ASP.NET MEMBERSHIP权限功能(一 )
- 为ASP.NET MVC扩展异步Action功能(下)
- 扩展ASP.NET MEMBERSHIP权限功能(二 )