c#写的一个html模板方案,不知道大家在asp.net上面使用的是不是也是这个原理

因为小弟写个方法还是很容易的,但是对于前端相关的东西却不是很懂,在我自己做铜梁视窗这个小站的时候,涉及到每个频道一个模板,每个频道的相关页面也是一个模板,小弟没有吧html写在aspx上面,然后在匹配模板的时候发现很多有些模板是可以公用的,例如首页的head部分,还有其他的频道head部分,还有footer部分,所以写了下面这么一个东西来控制每个页面的模板调用,不知道对不对哈。请各位大牛小牛赐教!

对了,在运营过程中,我服务器每个月会产生1%的磁盘碎片,不知道是否跟这个模板方案有关

 /// <summary>
        /// dir 是template目录下的分文件夹,shop,m,以及其他
        /// </summary>
        /// <param name="dir"></param>
        /// <param name="tpl"></param>
        /// <returns></returns>
        public static string GetPageContent(string dir, string tpl)
        {

            string key = dir + "_" + tpl + "_CONTENT";
            string contentkey = dir + "_CONTENT_CONTENT";

            string temp = "";
            if (DataCache.GetCache(key) == null)
            {
                string filepath = "/Template/" + dir + (dir.Length > 0 ? "/" : "") + tpl + ".html";

                temp = File.ReadAllText(HttpContext.Current.Server.MapPath(filepath), Encoding.UTF8);

                DataCache.SetCache(key, temp);
            }
            else
            {
                temp = DataCache.GetCache(key).ToString();
            }

            string content = "";

            if (DataCache.GetCache(contentkey) == null)
            {
                content = File.ReadAllText(HttpContext.Current.Server.MapPath("/Template/" + dir + "/Content.html"), Encoding.UTF8);
                DataCache.SetCache(contentkey, content);
            }
            else
            {
                content = DataCache.GetCache(contentkey).ToString();
            }

            string html = content.Replace("<$inner$>", temp);

            string headstr = (string)DataCache.GetCache("HEADCONTENT");
            string footstr = (string)DataCache.GetCache("FOOTCONTENT");
            if (headstr == null || footstr == null)
            {
                headstr = File.ReadAllText(HttpContext.Current.Server.MapPath("/Template/head.html"), Encoding.UTF8);
                footstr = File.ReadAllText(HttpContext.Current.Server.MapPath("/Template/foot.html"), Encoding.UTF8);
                DataCache.SetCache("HEADCONTENT", headstr);
                DataCache.SetCache("FOOTCONTENT", footstr);
            }

            html = html.Replace("<$footcontent$>", footstr);
            html = html.Replace("<$headcontent$>", headstr);

            if (!string.IsNullOrEmpty(dir))
            {
                CMS_SEO seo = GetCurrectSeo(dir);

                html = html.Replace("<$seoname$>", seo.SiteName);
                html = html.Replace("<$seourl$>", seo.SiteUrl);
                html = html.Replace("<$seoaddress$>", seo.Address);
                html = html.Replace("<$seocopyright$>", seo.Copyright);
                html = html.Replace("<$seodescription$>", seo.Description);
                html = html.Replace("<$seoemail$>", seo.Email);
                html = html.Replace("<$seoicp$>", seo.ICP);
                html = html.Replace("<$seokeywords$>", seo.Keywords);
                html = html.Replace("<$seologo$>", seo.Logo);
                html = html.Replace("<$seotel$>", seo.Tel);
                html = html.Replace("<$seoweixin$>", seo.Weixin);
                html = html.Replace("<$seoworktime$>", seo.WorkTime);
                html = html.Replace("<$OnlineChart$>", seo.OnlineChart);
            }

            html = html.Replace("<$token$>", DateTime.Now.AddHours(1).Ticks + "");

            //广告位
            html = html.Replace("<$DetailBottom$>", GetAdScript("DetailBottom"));
            html = html.Replace("<$RightContent$>", GetAdScript("RightContent"));
            html = html.Replace("<$BottomAd$>", GetAdScript("BottomAd"));
            //广告位结束

            html = new BLL_Adv().GetPlaceTag(html, dir);

            return html;
        }

  小弟程序不精,请各位关照关照,顺便看看小弟的小站有何改进之处---》铜梁视窗

时间: 2024-09-28 21:08:15

c#写的一个html模板方案,不知道大家在asp.net上面使用的是不是也是这个原理的相关文章

自己写的一个后台模板

使用thinkphp + bootstrap实现,iframe主页面跳转 js校验提示统一封装 单张图片实现滚动条,html5 + jquery git:[email protected]:1209349015/admin_template.git

我写的一个ExcelHelper通用类,可用于读取或生成数据

读取或生成EXCEL数据的方法有很多,一般常见的有: 1.通过OFFICE EXCEL组件,优点:读取与生成EXCEL文件方便,缺点:服务器上必须安装OFFICE软件,且进程无法及时释放 2.通过第三方组件(比如:NPOI),优点:无需安装OFFICE软件,缺点:需要引入第三方组件,当然这个还是比较强的 3.通过把EXCEL当成数据库,连接后运用SQL语句读取,写入的话就自行拼接成HTML表格,优点:无需另外的组件,缺点:需要会SQL及拼接HTML表格较麻烦: 三种方法我都有用过,若开发BS网站

自己写的一个自动化测试任务执行工具(模板)

@echo off REM 设置自动执行的最大次数 SET nMaxJobTimes=100 REM 启用变量延迟 setlocal enabledelayedexpansion FOR /L %%i IN (0,1,%nMaxJobTimes%) DO ( cls echo. echo. echo ******************************************** echo. echo 测试任务自动化执行工程 echo 版本:v1.0.0.1 echo. echo ***

因为业务需要,用nodejs写了一个css解析器,因为是基础库,想开源,不知道有没有人需要。

一般而言htmlparser的解析使用得比较多,node库中已经有了,npm install -g htmlparser2就可以安装. 这段时间要实现nodejs上的安全扫描,需要对html,css,js进行解析,css主要是限制一些绝对定位,浮层和url,防止产生钓鱼或攻击.所以写了一个css的解析器. 感觉 这些基础库应该公开出去,但是不知道有多少人有这个需求.

《Effective C 》资源管理:条款25--考虑写出一个不抛出异常的swap函数

条款25考虑写出一个不抛出异常的swap函数 条款25:考虑写出一个不抛出异常的swap函数 swap是STL中的标准函数,用于交换两个对象的数值.后来swap成为异常安全编程(exception-safe programming,条款29)的脊柱,也是实现自我赋值(条款11)的一个常见机制.swap的实现如下: namespace std{ template<typename T> void swap(T& a, T& b) { T temp(a); a=b; b=temp;

Discuz3.3精仿小米风格整站模板制作——1、新建模板方案

术语说明: 模板——模板是一堆按照规定命名方式的html文件,用于指定整个论坛不同页面的外观. 标签——标签和模板共同作用以实现论坛换肤功能,其中标签主要控制页面显示什么数据,显示多少条等. 风格——风格是一个xml配置文件,用于配置一些固定区域字体的大小.颜色.背景色等.例如春节时,整个版面变成喜庆红色等.风格这个功能实质上是一种可以直接在后台设置论坛中固定格式的文字(如标题列表等)的大小.颜色.背景色等而不用单独写css文件进行覆盖的技术.对于有编码能力的站长来说,其实无多大意义. Disc

如何正确地写好一个界面

写界面可以说是每位移动应用开发者的基本功,也是一位合格移动应用开发者绕不过去的坎.但就如不是每一位开发者都能够成为合格的开发者一样,本人在 不同的团队中发现,甚少有人能够编写出合格的UI代码:而非常奇怪的是,在很多的开发者论坛上看到我们移动开发者更多关注于某个控件或者是动画,但却很少 看到深入剖析UI机制,指导UI开发的文章. 由于界面涉及到的方面实在过于广泛,本文不可能事无巨细,一一道来,所以本文先立足于点,深入剖析iOS UI系统中不被重视却非常重要的机制,帮助本文读者对iOS的UI系统有整

如何写好一个网页---传智首页

---恢复内容开始--- 学习前端知识也有一个月了吧,十月十四号来到这里学习的,一直到11月7号,差不多也有一个月的时间了,所以今天想谢谢这个时间段学到的一些知识,也留着以后能够回头看看这段时间的付出. 今天写的主题内容是一个简单的网页制作,用的模板的话就是传智的首页,因为自己素材只有传智首页的素材罢了... 对我而言,想要去设计一个网站,我先会做大量的分析,第一步做的就是对整个网站的整体框架的和模块的划分.就例如传智首页来说,我选择将这个首页看成是一个最大的整体模块,然后在这个模块里面去再划分

条款25:考虑写出一个不抛异常的swap函数

条款25:考虑写出一个不抛异常的swap函数 swap函数在C++中是一个非常重要的函数,但实现也非常复杂. 看一个缺省的std::swap函数的实现 namespace std { template<typename T> void swap( T& a , T& b) { T temp(a); a = b; b = temp } } ①内置类型的调用 int a = 2; int b =3; std::swap(a, b); cout<<"a:&quo