找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3599|回复: 12

ASP.NET 动态生成html文件, 如何生成静态页面

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:28
  • 打卡月天数:7
  • 打卡总奖励:7961
  • 最近打卡:2025-12-22 17:16:30

3317

主题

285

回帖

2万

积分

管理员

积分
24106
发表于 2021-8-22 13:29:48 | 显示全部楼层 |阅读模式
1. 使用场景

适用于服务器功能不强的web站点,不希望频繁通过读取数据库来展示内容,当有新的内容产生时,生成静态页面存放内容,数据库中只保留如标题,类别等一些查询关键字。


2. 使用静态页面的好处
(1)提高网站的访问速度
(2)减轻服务器负担
(3)利于搜索引擎抓取


3. ASP.NET生成静态页面的思路
(1)创建模板template.html文件,在里面定义一些特殊的字符串格式用于替换内容,如$htmlformat
(2)读取模板内容到指定对象中
(3)将特殊的字符串格式替换为你想要的内容
(4)创建新的静态页面,并将替换完标签的内容写入到文件中即可

4.实现

定义html模板文件"template.html",注意标签里内容


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>

<body>
    <!--标题-->
    <div>$htmlformat[0]</div>
    <!--内容-->
    <div>$htmlformat[1]</div>
</body>
</html>

C#生成代码

protected void Button1_Click(object sender, EventArgs e)
{
    // 01.读取html模板
    string template = "";
    try
    {
        using (StreamReader sr = new StreamReader(Server.MapPath("template.html")))
        {
            template = sr.ReadToEnd();
        }
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
        Response.Write("<script>alert('读取文件错误.')</script>");
    }

    // 02.定义和html标记数目一致的数组并赋值
    string[] format = new string[4];
    format[0] = "这里是标题";
    format[1] = "这里是内容";

    // 03.替换html模板里的标签为实际想要的值
    for (int i = 0; i < 4; i++)
    {
        template = template.Replace("$htmlformat[" + i + "]", format[i]);
    }

    // 04.生成html文件
    try
    {
        using (StreamWriter sw = new StreamWriter(Server.MapPath("output.html"), false, Encoding.UTF8))
        {
            sw.WriteLine(template);
        }

        Response.Write("<script>alert('已生成html文件.')</script>");
    }
    catch
    {
        Response.Write("生成html文件失败.");
    }
}

工控课堂 www.gkket.com

0

主题

108

回帖

320

积分

注册会员

积分
320
发表于 2021-8-22 13:29:48 | 显示全部楼层
加油,加油,不要沉下去,我是最热贴
工控课堂 www.gkket.com

0

主题

114

回帖

371

积分

注册会员

积分
371
发表于 2021-8-22 13:38:58 | 显示全部楼层
这个类目最活跃了!赞一个!
工控课堂 www.gkket.com

0

主题

119

回帖

293

积分

注册会员

积分
293
发表于 2025-11-20 07:49:49 | 显示全部楼层
路过打卡,为优质内容疯狂打 call
工控课堂 www.gkket.com

0

主题

78

回帖

108

积分

新手上路

积分
108
发表于 2025-11-20 07:55:09 | 显示全部楼层
说得对!狠狠赞同,没毛病~
工控课堂 www.gkket.com

0

主题

91

回帖

139

积分

新手上路

积分
139
发表于 2025-11-20 07:57:26 | 显示全部楼层
理性围观,感觉大家说得都有道理
工控课堂 www.gkket.com

0

主题

62

回帖

96

积分

新手上路

积分
96
发表于 2025-11-20 07:57:42 | 显示全部楼层
原来还有这种操作,长见识了!
工控课堂 www.gkket.com

0

主题

531

回帖

2056

积分

高级会员

积分
2056
发表于 2025-11-20 07:58:09 | 显示全部楼层
水贴也要有仪式感,我先来打卡~
工控课堂 www.gkket.com

0

主题

102

回帖

167

积分

新手上路

积分
167
发表于 2025-11-20 07:58:31 | 显示全部楼层
谁懂啊!这内容我能循环看十遍
工控课堂 www.gkket.com

0

主题

345

回帖

2785

积分

高级会员

积分
2785
发表于 2025-11-20 07:59:46 | 显示全部楼层
画面感太强了,仿佛身临其境!
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 03:29 , Processed in 0.077778 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表