asp.net 多个css文件内容自动放到一个文件中

简介: 没事做,写了一个把多个css文件合并到一个文件中的方法,因为开发时,为了方便修改和共用css,我们可能会在页面引用4、5个css文件 ,但是实际运行中,我们是手动把css放到html 中去的 ,这样运行时页面显示快点,实际上是如此,但是每次修改的工作量是很大的,本地修改之后不能原封不动地放到服务器上去,在服务器上又要手动修改页面中的css。

没事做,写了一个把多个css文件合并到一个文件中的方法,因为开发时,为了方便修改和共用css,我们可能会在页面引用4、5个css文件 ,但是实际运行中,我们是手动把css放到html 中去的 ,这样运行时页面显示快点,实际上是如此,但是每次修改的工作量是很大的,本地修改之后不能原封不动地放到服务器上去,在服务器上又要手动修改页面中的css。

在asp.net mvc模式中,我们可以把css的内容放到一个部分视图中,在head标签之间包含这个视图,那样运行时css就在html中了,我下面这个方法就是把css合并到部分视图中,说白了就是自动代替手动的工作。。。

 

        /// <summary>
        /// 多个css文件内容自动放到一个文件中,
        /// css文件中包含的(import)的css文件内容也替换原来的位置
        /// 调用示例:string info = CombineCssFiles("_Layout_css.cshtml","index.css", "site.css");
        /// </summary>
        /// <param name="DestFilePath">目标文件路径</param>
        /// <param name="cssFiles">Content下的css文件列表</param>
        /// <returns></returns>
        public static string CombineCssFiles(string DestFilePath, params string[] cssFiles)
        {
            DateTime dt1 = DateTime.Now;
            List<string> addedfile = new List<string>();
            Regex r = new Regex("@import url\\(([\\w.]+)\\);");
            string cssContent = "<style type=\"text/css\">";
            string info = "";
            if (cssFiles == null || cssFiles.Length == 0) return "";
            else
            {
                
                foreach (string cssFile in cssFiles)
                {
                    if (!addedfile.Contains(cssFile))
                    {
                        info = string.Format(info + "***************{0} start **********<br/>", cssFile);
                        cssContent = cssContent + System.IO.File.ReadAllText(GetAbsolutePath("/Content/" + cssFile), Encoding.UTF8);
                        while (true)
                        {
                            MatchCollection mc = r.Matches(cssContent);
                            if (mc.Count == 0) break;
                            foreach (Match m in mc)
                            {
                                if (!addedfile.Contains(m.Groups[1].Value))//未添加过某个文件
                                {
                                    info = info + m.Groups[0].Value + m.Groups[1].Value + "<br/>";
                                    string cssTemp = System.IO.File.ReadAllText(GetAbsolutePath("/Content/" + m.Groups[1].Value), Encoding.UTF8);
                                    cssContent = cssContent.Replace(m.Groups[0].Value, cssTemp);
                                    addedfile.Add(m.Groups[1].Value);
                                }
                                else//添加过同一个文件
                                {
                                    info = info + m.Groups[0].Value + m.Groups[1].Value + "(Added)<br/>";
                                    cssContent = cssContent.Replace(m.Groups[0].Value, "");
                                }
                            }
                        }
                        info = string.Format(info + "***************{0} end **********<br/>", cssFile);
                        addedfile.Add(cssFile);
                    }
                }
                cssContent = cssContent.Replace("@charset \"utf-8\";", "");
                cssContent = cssContent + "\r\n</style>";
                DateTime dt2 = DateTime.Now;
                TimeSpan ts = dt2 - dt1;
                info = info + "css内容放入/Views/Shared/" + DestFilePath + ",运行时间:" + ts.TotalMilliseconds + "毫秒<br/><br/>";
                using (StreamWriter sw = new StreamWriter(GetAbsolutePath("/Views/Shared/" + DestFilePath), false, Encoding.UTF8))
                {
                    sw.Write(cssContent);
                }
                return info;
            }
        }
//2013-11-18解决了重复引用一个文件的问题。



相关文章
|
29天前
|
C# Windows
.NET开源免费的Windows快速文件搜索和应用程序启动器
今天大姚给大家分享一款.NET开源(MIT License)、免费、功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher。
|
7月前
|
前端开发 UED
关于 Web 应用的内联 css 和 scss 文件里的 var 关键字用法
关于 Web 应用的内联 css 和 scss 文件里的 var 关键字用法
76 0
|
5月前
|
前端开发
解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题
解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题
|
3月前
|
Web App开发 JSON 前端开发
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)
53 0
|
4月前
|
JSON 前端开发 JavaScript
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)(上)
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)
57 0
|
2月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
4月前
|
前端开发 程序员 容器
CSS样式文件和class类名命名规范参考
CSS样式文件和class类名命名规范参考
29 0
|
4月前
|
Web App开发 前端开发 JavaScript
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)(下)
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)
28 0
|
5月前
|
前端开发 JavaScript
前端知识笔记(二十六)———React如何像Vue一样将css和js写在同一文件
前端知识笔记(二十六)———React如何像Vue一样将css和js写在同一文件
32 1
|
7月前
|
对象存储
.net core 阿里云接口之拷贝文件
紧接上文, 1)[.net core 阿里云接口之获取临时访问凭证](https://developer.aliyun.com/article/1363447?spm=a2c6h.12873639.article-detail.7.2b0e5b1cpeWbZ5 ".net core 阿里云接口之获取临时访问凭证") 2)[.net core 阿里云接口之将指定的OSS文件下载到流](https://developer.aliyun.com/article/1363886 ".net core 阿里云接口之将指定的OSS文件下载到流") 本文继续阿里云接口调用,将指定的OSS文件下载到流。
37 0