网站建设知识

我们将想法与焦点与您一起共享

当前位置:深圳网站建设 > 网站建设知识> .net快速生成静态网页的方法二

.net快速生成静态网页的方法二

2015-1-31 10:52:00 独占网络 网站建设知识
我们.net快速生成静态网页的方法一里面讲到 CreateIncludeHtml,我们现在就写这个解析方法
        /// <summary>
        /// 这是一个把包含其它网页模板的信息替换成一个模板
        /// </summary>
        /// <param name="html">替换前的文件</param>
        /// <returns>这是替换后的文件</returns>
        public static string CreateIncludeHtml(string html)
        {
            //得到包含的模板文件的路径的标签信息
            string fileinfo = string.Empty;
            //得到包含的模板文件的路径
            string zdinfo = string.Empty;

            //解析标签的模板
            Regex reg = new Regex("(<!--include file=\"(?<zd>[\\s\\S]*?)\" -->)");

            //判断是否存我们的需要的信息
            if (reg.IsMatch(html))
            {
                //循环得我们的需要的信息
                foreach (Match m in reg.Matches(html))
                {
                    //得到标签解析前的信息
                    fileinfo = m.Groups[0].Value.ToString();
                    //得到解析标签的路径
                    zdinfo = m.Groups["zd"].ToString();

                    //判断信息是否存在
                    if (!string.IsNullOrEmpty(fileinfo) && !string.IsNullOrEmpty(zdinfo) && zdinfo.IndexOf(".html") > 0)
                    {
                        //替换我们的标签信息
                        html = html.Replace(fileinfo, CreateFile.CreateSingleFile("/Templates/" + zdinfo));

                    }

                }
            }
            //返回参数
            return html;

}
我们这里已经还记得我们上面的模板里面还有两个解析标签,所以我们要将上面的createDefault改为
public void createDefault(string htmlpath, string filename)
        {
            //将我们刚才写的duzhan.html文件路径写进去然后读取到信息
            string html = CreateFile.CreateSingleFile(htmlpath);

             //如果读取的信息没有读取到信息我们就返回回去。
            if (string.IsNullOrEmpty(html))
            {

                return;
            }
            
            //解析我们的标签,这个方法我们在下面定义。
            html=CreateIncludeHtml(html);
 
            //解析基本标签
            html = CreateTemplates.CreateListHtml(html);
 
            //解析if标签
            html = CreateTemplates.ReplaceIfTag(html);
             
            //生成文件
            new CreateFile().CreateWriteFile(filename, html);

}

那么我们下面的就先来写一个解析循环标签的方法
public static string CreateListHtml(string html)
        {
            //得到网页信息
            string contentHtml = html;
            //表格名
            string table = string.Empty;
            //参数编号名
            string typeid = string.Empty;
            //得到包含的模板文件的路径的标签信息
            string taginfo = string.Empty;
            //得到包含的模板文件的路径
            string zdinfo = string.Empty;
            //查询的条数
            string num = string.Empty;
            //查询的条件 
            string where = string.Empty;
            //查询的排列顺序
            string order = string.Empty;
            //解析标签的模板
            Regex reg = new Regex("(<!--list(\\s)(?<ListSet>[^(\\-\\-)]*)--\\>(?<zd>[\\s\\S]*?)\\<!--/list-->)");

            //判断是否存我们的需要的信息
            if (reg.IsMatch(html))
            {
                //循环得我们的需要的信息
                foreach (Match m in reg.Matches(html))
                {

                    table = GetTagVal(m.Groups["ListSet"].ToString(), "table");
                    typeid = GetTagVal(m.Groups["ListSet"].ToString(), "typeid");
                    num = GetTagVal(m.Groups["ListSet"].ToString(), "num");
                    order = GetTagVal(m.Groups["ListSet"].ToString(), "order");
                    where = GetTagVal(m.Groups["ListSet"].ToString(), "where");
                    
                    //这是我们标签里面的详细信息
                    zdinfo = m.Groups["zd"].ToString();
                    //List标签内容,这个是用于替换的老标签信息
                    taginfo = m.Groups[0].Value.ToString();
                    //这是是一个转型大家自己定义一个就可以了
                    int listnum = Convert.ToInt32(num);

                    int showtypeid = Convert.ToInt32(typeid);

                    string strsql = " 1=1 ";
 
                    //这是需要大家自定义方法去操作数据库的信息,将信息替换就可以了
                    html = html.Replace(taginfo, replaceListHmtl(zdinfo, table, listnum, strsql, order, letter));


                }
            }


            return html;

        }

               后我们来写替换标签。
             public static string ReplaceIfTag(string tempHtml)
             {
            string contentHtml = tempHtml;
            Regex reg = new Regex(@"(<!--if (?<IfSet>[\s\S.]+?) --\>(?<text>[\s\S.]*?)\<!--/if-->)");

            if (reg.IsMatch(tempHtml))
            {
                foreach (Match m in reg.Matches(tempHtml))
                {
                    //所有的信息
                    string alltext = m.Groups[0].Value.ToString();
                    //前面的标签
                    string testbase = GetTagVal(m.Groups["IfSet"].ToString(), "testbase");
                    //后面标签的内容
                    string testvalue = GetTagVal(m.Groups["IfSet"].ToString(), "testvalue");
                    //判断的方式
                    string testmodel = GetTagVal(m.Groups["IfSet"].ToString(), "testmodel");
                    //得到内容
                    string text = m.Groups["text"].ToString();

                    string vtruestr = "";
                    string vfalsestr = "";
                    if (text.Contains("<!--else-->"))
                    {
                        string[] textarr = System.Text.RegularExpressions.Regex.Split(text, "<!--else-->");
                        if (textarr.Length > 0)
                        {
                            vtruestr = textarr[0];
                            vfalsestr = textarr[1];
                        }
                    }
                    else
                    {
                        vtruestr = text;
                        vfalsestr = "";
                    }
                    bool vbool = false;
                    if (testmodel.Equals("%"))
                    {
                        if (Convert.ToInt32(testbase) % Convert.ToInt32(testvalue) == 0)
                        {
                            vbool = true;
                        }
                    }
                    else if (testmodel.Equals("="))
                    {
                        if (testbase.Equals(testvalue))
                        {
                            vbool = true;
                        }
                    }
                    else if (testmodel.Equals("!="))
                    {
                        if (testbase.Trim().Equals(testvalue.Trim()))
                        {
                            vbool = true;
                        }
                    }
                    else if (testmodel.Equals(">"))
                    {
                        if (Convert.ToInt32(testbase) > Convert.ToInt32(testvalue))
                        {
                            vbool = true;
                        }
                    }
                    else if (testmodel.Equals("<"))
                    {
                        if (Convert.ToInt32(testbase) < Convert.ToInt32(testvalue))
                        {
                            vbool = true;
                        }
                    }

                    string resut = "";
                    if (vbool)
                    {
                        resut = vtruestr;
                    }
                    else
                    {
                        resut = vfalsestr;
                    }
                    contentHtml = contentHtml.Replace(alltext, resut);
                }
            }
            return contentHtml;
        }
这样我们就将生成静态网页的方法写好,如果有不懂,请联系独占网络的技术人员 http://www.sz886.com

始终专注高端网站建设服务 网站建设案例服务方案联系

联系我们

135-3000-5572
151-1257-9390

地址:深圳市龙岗区横岗街道联旺大厦5楼

邮箱:chenmh@sz886.com

我们的优势

12年建站服务经验自主开发后台CMS开发项目不外包无隐形收费

服务198家上市企业服务行业龙头超过70家 营销型网站建设完备的项目流程管理体系网页设计与网站开发技术并重

关于独占网络

十多年来,凭借对设计的深刻理解,对互联网营销趋势的敏锐洞察,独占网络不断修正服务导向,完善创作品格,始终注重专业探索,为所有合作企业机构全力以赴,确保网站的视觉体验与营销转化能力。

我们是一群对互联网抱有执着信念的技术控。从2012年到现在,公司从未建过强大的营销团队,却凭着作品与服务不断保持增长,做到了"桃李不言,下自成蹊。" 我们坚信:每个客户都是一条渠道,每个案例都是一个广告,为企业插上翅膀,助力企业转型升级,我们已做好准备。

专业团队为您提供深圳网站建设、深圳网站制作、深圳营销型网站建设、外贸网站建设等服务,深圳建网站就找独占网络 | 12年专注网站建设

深圳市独占网络科技有限公司 |备案号:粤ICP备15007128| Copyright 2023,ALL Rights Reserved www.sz886.com | Copyright 2023版权所有
Hi,Are you ready? 如果您有意向
请于我们取得联系。

有一个互联网项目想和我们谈谈吗?
您可以填写右边的表格,让我们了解您的项目需求,这是一个良好的开始,我们将会尽快与你取得联系。当然也欢迎您给我们写信或是打电话,让我们听到你的声音!

独占-整合互联网营销

地址:深圳市龙岗区横岗地铁D出口联旺大厦5楼
大客户专线:深圳 13530005572
售前QQ:1447567909
E-mail: sales@sz886.cn

合作意向表
您希望我们为您提供什么服务?