深圳网站建设、深圳建网站、网站建设公司定制属于您的高端个性化网站!

搜索深圳网站建设相关案例及相关信息 服务热线:13530005572/15112579390
首页 > 网站建设知识 > .net快速生成静态网页的方法二

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

  • 所属分类:网站建设知识
  • 作者: 利来w66(中国)有限公司
  • 更新时间: 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;
        }
这样我们就将生成静态网页的方法写好,如果有不懂,请联系利来w66(中国)有限公司的技术人员 //labelmachines.net

相关推荐

您值得信任的网站建设专家!

为其提供系统的基于互联网的品牌行销策略 、 创意执行 、 追踪运营服务 。