Asp.Net Mvc ScriptBundle 脚本文件捆绑压缩 导致 脚本出错的问题
由于捆绑压缩会对所有包含的文件进行压缩,无法设置忽略对某个js文件的压缩。导致压缩该js后,脚本出错的问题。
解决方式:
重写 ScriptBundle 的 GenerateBundleResponse 。代码如下
- public class ScriptBundleFileIgnoreZip: ScriptBundle
- {
- readonly HashSet<string> bundles = new HashSet<string>();
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="virtualPath"></param>
- public ScriptBundleFileIgnoreZip(string virtualPath) : base(virtualPath) { }
- /// <summary>
- /// 忽略压缩包含文件
- /// </summary>
- /// <param name="virtualPaths">文件组</param>
- /// <returns></returns>
- public Bundle IgnoreMinInclude(params string[] virtualPaths)
- {
- foreach (string path in virtualPaths)
- {
- string cPath = path.TrimStart('~');
- if (!bundles.Contains(cPath))
- {
- bundles.Add(cPath);
- }
- }
- return base.Include(virtualPaths);
- }
- /// <summary>
- /// 生成压缩捆绑响应文
- /// </summary>
- /// <param name="context">捆绑上下文</param>
- /// <returns></returns>
- public override BundleResponse GenerateBundleResponse(BundleContext context)
- {
- if (context == null)
- {
- throw new ArgumentNullException("context");
- }
- IEnumerable<BundleFile> enumerable = this.EnumerateFiles(context);
- enumerable = context.BundleCollection.IgnoreList.FilterIgnoredFiles(context, enumerable);
- enumerable = this.Orderer.OrderFiles(context, enumerable);
- if (this.EnableFileExtensionReplacements)
- {
- enumerable = context.BundleCollection.FileExtensionReplacementList.ReplaceFileExtensions(context, enumerable);
- }
- StringBuilder bundleContent = new StringBuilder();
- string text2 = ";" + Environment.NewLine;
- Microsoft.Ajax.Utilities.Minifier minifier = new Microsoft.Ajax.Utilities.Minifier();
- foreach (var bf in enumerable)
- {
- if (bundles.Contains(bf.VirtualFile.VirtualPath))
- {
- bundleContent.Append(bf.ApplyTransforms());
- }
- else
- {
- bundleContent.Append(minifier.MinifyJavaScript(bf.ApplyTransforms(), new Microsoft.Ajax.Utilities.CodeSettings()
- {
- EvalTreatment = Microsoft.Ajax.Utilities.EvalTreatment.MakeImmediateSafe,
- PreserveImportantComments = false
- }));
- }
- bundleContent.Append(text2);
- }
- if (this.Transforms != null)
- {
- this.Transforms.Clear();
- }
- return this.ApplyTransforms(context, bundleContent.ToString(), enumerable);
- }
用法:
- var scriptBundles = new ScriptBundleFileIgnoreZip("~/JS");
- scriptBundles.Include("~/要压缩的文件0.js");
- scriptBundles.IgnoreMinInclude("~/忽略压缩的文件.js")
- .Include("~/要压缩的文件1.js", "~/要压缩的文件2.js");
- BundleTable.Bundles.Add(scriptBundles);
Asp.Net Mvc ScriptBundle 脚本文件捆绑压缩 导致 脚本出错的问题的更多相关文章
- [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传
原文 [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传 Fine Uploader(http://fineuploader.com/)是一个实现 ajax 上传文件 ...
- ASP.NET MVC 导出CSV文件
ASP.NET MVC 导出CSV文件.直接贴代码 /// <summary> /// ASP.NET MVC导出CSV文件Demo1 /// </summary> /// ...
- asp.net Mvc 模型绑定项目过多会导致页面运行时间卡
asp.net Mvc 模型绑定项目过多会导致页面运行时间卡的问题. 解决方式就是采用ModelView方式进行精简,已减少模型绑定及验证的时间.
- asp.net mvc 应用Bundle(捆绑和微小)压缩技术 启用 BundleConfig 配置web.config
从MVC4开始,我们就发现,项目中对Global.asax进行了优化,将原来在MVC3中使用的代码移到了 [App_Start]文件夹下,而Global.asax只负责初始化.其中的BundleCon ...
- Asp.Net MVC 文件管理Demo(文件展示,上传,下载,压缩,文件重命名等)
之前 ,有想做一个文件管理页面. 参考了 许多资料,终于完成了一个基于Asp.net MVC 的文件管理Demo.界面如下. 一,实现功能及相关技术 文件管理Demo基于Asp.NET MVC , ...
- ASP.NET MVC 静态资源打包和压缩问题小记
ASP.NET MVC 中有个 BundleConfig 用于静态资源的打包和压缩,我在使用的过程中遇到一些问题,现在做下总结,并给出具体的解决方案. 问题一:打包压缩后的 JavaScript 和 ...
- ASP.NET MVC实现Excel文件的上传下载
在应用系统开发当中,文件的上传和下载是非常普遍的需求.在基于.NET的C/S架构的项目开发当中,有多种方案可以实现文件的上传和下载(httpwebrequest.webclient等),而且多采用异步 ...
- Asp.Net MVC 3.0 使用Gzip压缩
前言 Gzip最早由Jean-loup Gailly和Mark Adler创建,用于Unix系统的文件压缩.我们在Linux中经常会用到后缀为.gz的文件,它们就是Gzip格式的.现今已经成为Inte ...
- [Fine Uploader] 用Fine Uploader+ASP.NET MVC实现ajax文件上传[代码示例]
Fine Uploader(http://fineuploader.com/)是一个实现 ajax 上传文件的 Javascript 组件 This project attempts to ach ...
随机推荐
- Ubuntu 分辨率更改 xrandr Failed to get size of gamma for output default
sudo vim /etc/xorg.conf copy: Section "Monitor" Identifier "Monitor0" VendorName ...
- day5:vcp考试
Q81. An administrator needs to recover disk space on a previously-used thin provisioned virtual disk ...
- css菜鸟学习之text-align属性,行内元素,块级元素居中详解
一.text-align属性 1.text-align用来设置元素中的的文本对齐方式,例如:如果需要设置图片的对齐方式,需要设置图片的父元素的text-align属性: 2.text-align只对文 ...
- 带最小值操作的栈 · Min Stack
[抄题]: 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值. 你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成. [思维问题]: [一句话思 ...
- Spring框架之什么是IOC的功能?
1. 什么是IOC的功能? * IoC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!! * 使用IOC可以解决的程序耦合性高的问题!!
- 解决ios手机页面overflow scroll滑动很卡的问题
在移动端html中经常出现横向/纵向滚动的效果,但是在iPhone中滚动速度很慢,感觉不流畅,有种卡卡的感觉,但是在安卓设备上没有这种感觉; 要解决这个问题很简单: 一行代码搞定 -webkit-ov ...
- Ubuntu 下如何查看已安装的软件
1.查看安装的所有软件 dpkg -l 例如:dpkg -l | grep ftp <span style="font-size:18px;">:~$ dpkg -l ...
- Oracle LOOP循环控制语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
- BZOJ1699: [Usaco2007 Jan]Balanced Lineup排队 - 线段树
description 查询区间最大和最小 题解 线段树 愉悦身心啊 代码 #include<cstring> #include<cstdio> #include<alg ...
- Fiddler的钩子hook导致电脑无法连上网络
今天,电脑怎么都无法连上网络,重启了几次电脑也不行,网络环境是没有问题的,后来同事告诉我,Fiddler有一个BUG,就是Fiddler获取钩子之后没有释放掉,必须启动Fiddler,再关闭Fiddl ...