手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net Bundle功能扩展
asp.net Bundle功能扩展
摘要:前言新建Asp.netMVC4项目的时候,在Global.asax.cs里面发现多了一句代码BundleConfig.RegisterBun...

前言

新建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 Bundle功能扩展】相关文章:

asp.net Google样式分页控件

asp.net TripleDES加密、解密算法

asp.net导出EXCEL的功能代码

asp.net Gridview里添加汇总行

asp.net(c#) ubb处理类

asp.net gridview多页时的批量删除

asp.net ext treepanel 动态加载XML的实现方法

asp.net中MD5 16位和32位加密函数

asp.net Hashtable 遍历写法

asp.net 半角全角转化工具

精品推荐
分类导航