开发者社区> 真爱无限> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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解决了重复引用一个文件的问题。



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ASP.NET Core WEB API 使用element-ui文件上传组件el-upload执行手动文件文件,并在文件上传后清空文件
ASP.NET Core WEB API 使用element-ui文件上传组件el-upload执行手动文件文件,并在文件上传后清空文件
0 0
ASP.NET Core单文件和多文件上传并保存到服务端
ASP.NET Core单文件和多文件上传并保存到服务端
0 0
ASP.NET MVC中使用jQuery Ajax通过FormData对象异步提交图片文件到服务端保存并返回保存的图片路径
ASP.NET MVC中使用jQuery Ajax通过FormData对象异步提交图片文件到服务端保存并返回保存的图片路径
0 0
ASP.NET Core 2.1以上Bootstr ap4前端模板文件,开发环境与发布环境前端模板environment的使用
ASP.NET Core 2.1以上Bootstr ap4前端模板文件,开发环境与发布环境前端模板environment的使用
0 0
ASP.NET Core 返回文件、用户 下载文件,从网站下载文件,动态下载文件
ASP.NET Core 返回文件、用户 下载文件,从网站下载文件,动态下载文件
0 0
ASP.NET实现文件的上传和下载
最近做的一个高校网站中涉及到了上传和下载文件的需求(具体需求为:网站公布的通知,在后台要能给每个通知添加附件,在前台要能显示并下载附件),之前只是学习过关于上传的 理论知识,这里实践了一下下,与大家分享一下成果。
0 0
ASP.NET Core: 十二.内置日志、使用Nlog将日志输出到文件(下)
应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用。   ASP.NET Core提供了内置的日志,但没弄明白这么把它输出到文件, 只能在VS的输出中查看, 谁知道怎么弄告诉我一下。
0 0
ASP.NET Core: 十二.内置日志、使用Nlog将日志输出到文件(上)
应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用。   ASP.NET Core提供了内置的日志,但没弄明白这么把它输出到文件, 只能在VS的输出中查看, 谁知道怎么弄告诉我一下。
0 0
【原创】ASP.NET WebApi接收xml文件 xml序列化
如何新建WebApi项目就不用我介绍了吧。 直接进入正题。 首先,在.net平台不论要接收什么,肯定是从Request里获取。 大家肯定对普通的参数获取非常熟悉了,下面就介绍一下如何从Request获取文件流. System.IO.Stream sm =Request.Content.ReadAsStreamAsync().Result 这个方法返回的是一个System.IO.Stream类型,如果是单纯想获得文件,到这一步你就可以把它保存到本地了。
7651 0
+关注
真爱无限
主要技术.net sqlserver mysql。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
零基础CSS入门教程
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载