动态生成HTML的解决方案

     最近在做的项目中有一部分需要实现动态生成HTML,下面介绍一下它的解决方案。

    1, 需要一个模板,将HTML元素都预先写入模板,动态部分是用变量代替,动态部分比如CSS路径,内容,标题等等。这个变量应该尽量复杂,以免和HTML关键字或则其他元素相同。我们要做的就是在代码中使用内容数组替换那些在模板中的变量。

   2,使用StreamReader对象读取模板,读到一个StringBuilder对象中。代码如下:

     using (StreamReader sr = new StreamReader(“模板路径”))//注意使用服务器路径
            {
                String oneline;

                // 读取指定的HTML文件模板
                while ((oneline = sr.ReadLine()) != null)
                {
                    strhtml.Append(oneline);
                }

                sr.Close();
            }

    3,指定要生成的HTML文件,替换标记。代码如下:

            string fname = Server.MapPath("webfile") +“文件名”+“随机数”+ ".htm";


            for (int i = 0; i < 9; i++)
            {
                strhtml.Replace("$htmlkey[" + i + "]", newContent[i]);//newContent[]为和标记数相同的数字
            }

   4,把所有的内容写入文件流中,应该注意的一点是,必须使用相同的编码方式,推荐使用UTF-8,比如说我以前花了1天时间找出的原因竟然是CSS文件的编码方式没有设置成为UTF-8。另外,声称的HTML文件应该删除,要不然在第二次运行预览的时候可能会出现重合的现象。代码如下:

            // 创建文件信息对象
            FileInfo finfo = new FileInfo(fname);
            if (finfo.Exists)
            {
                finfo.Delete();
            }

            // 以打开或者写入的形式创建文件流
            using (FileStream fs = finfo.OpenWrite())
            {
                // 根据上面创建的文件流创建写数据流
                StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);

                // 把新的内容写到创建的HTML页面中
                sw.WriteLine(strhtml);

                sw.Flush();

                sw.Close();
            }

    5,打开HTML文件

             string strHtmll = "../webfile/epaper/" +iIdx + ".htm";//客户端路径
            Response.Write("<script>window.open('" + strHtmll + "')</script>");

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值