找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2287|回复: 12

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

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:29
  • 打卡月天数:1
  • 打卡总奖励:7791
  • 最近打卡:2025-12-13 17:25:16

2540

主题

1353

回帖

2万

积分

管理员

积分
21301
发表于 2021-10-5 15:29:55 | 显示全部楼层 |阅读模式
1. 使用场景
适用于服务器功能不强的web站点,不希望频繁通过读取数据库来展示内容,当有新的内容产生时,生成静态页面存放内容,数据库中只保留如标题,类别等一些查询关键字。

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

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

4.实现
定义html模板文件"template.html",注意标签里内容
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

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

  7. <body>
  8.     <!--标题-->
  9.     <div>$htmlformat[0]</div>
  10.     <!--内容-->
  11.     <div>$htmlformat[1]</div>
  12. </body>
  13. </html>
复制代码
C#生成代码
  1. protected void Button1_Click(object sender, EventArgs e)
  2. {
  3.     // 01.读取html模板
  4.     string template = "";
  5.     try
  6.     {
  7.         using (StreamReader sr = new StreamReader(Server.MapPath("template.html")))
  8.         {
  9.             template = sr.ReadToEnd();
  10.         }
  11.     }
  12.     catch (Exception ex)
  13.     {
  14.         Response.Write(ex.Message);
  15.         Response.Write("<script>alert('读取文件错误.')</script>");
  16.     }

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

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

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

  33.         Response.Write("<script>alert('已生成html文件.')</script>");
  34.     }
  35.     catch
  36.     {
  37.         Response.Write("生成html文件失败.");
  38.     }
  39. }
复制代码
​​来源:C#社区

工控课堂 www.gkket.com

0

主题

110

回帖

385

积分

注册会员

积分
385
发表于 2021-10-5 16:20:32 | 显示全部楼层
楼主加油,我们都看好你哦。
工控课堂 www.gkket.com

0

主题

438

回帖

1973

积分

高级会员

积分
1973
发表于 2021-10-5 17:08:48 | 显示全部楼层
感恩无私的分享与奉献
工控课堂 www.gkket.com

0

主题

94

回帖

138

积分

新手上路

积分
138
发表于 2025-11-12 21:48:55 | 显示全部楼层
被戳中笑点 / 泪点,太真实了!
工控课堂 www.gkket.com

0

主题

95

回帖

144

积分

新手上路

积分
144
发表于 2025-11-12 23:46:25 | 显示全部楼层
学到干货了,感谢分享,已火速收藏
工控课堂 www.gkket.com

0

主题

88

回帖

141

积分

新手上路

积分
141
发表于 2025-11-13 00:16:03 | 显示全部楼层
占个楼慢慢看,先马克一下
楼主辛苦啦,期待下一篇分享
工控课堂 www.gkket.com

0

主题

95

回帖

137

积分

新手上路

积分
137
发表于 2025-11-13 00:44:57 | 显示全部楼层
评论区人才辈出,笑到停不下来😂
工控课堂 www.gkket.com

0

主题

104

回帖

158

积分

新手上路

积分
158
发表于 2025-11-13 01:01:29 | 显示全部楼层
这波分析到位,逻辑满分!
工控课堂 www.gkket.com

0

主题

73

回帖

108

积分

新手上路

积分
108
发表于 2025-11-17 06:19:44 | 显示全部楼层
楼主太会说了,字字句句都在理
工控课堂 www.gkket.com

0

主题

97

回帖

147

积分

新手上路

积分
147
发表于 2025-11-17 07:31:20 | 显示全部楼层
哈哈哈哈笑不活,楼主这脑洞绝了!
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2025-12-22 12:38 , Processed in 0.082314 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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