ASP.NET生成静态页面

ESP32S3新手避坑:用IDF5.0驱动GT911触摸屏,我踩过的三个雷都给你填平了 本文详细解析了在ESP32S3开发板上使用IDF5.0驱动GT911触摸屏时常见的三大问题:软重启失效、状态寄存器读取异常和初始化参数差异。通过逻辑分析和硬件调试工具,提供了针对性的解决方案和优化建议,帮助开发者高效完成触摸屏驱动开发。 阅读详情

使用ASP.NET生成静态页面的方法有两种,第一种是使用C#在后台硬编码,第二种是读取模板文件,使用字符串替换的方法。第一种方法编码量大,而且维护比较困难。我重点讲解第二种方法。第二种方法的基本思路是:使用DW之类的工具生成一个静态页面模板。读取该模板文件,然后对里面的特殊标记使用真实的数据替换掉,并生成一个HTML文件
请看代码
1.C#

using System;
 using System.Collections.Generic;
 using System.Text;
 using System.Xml;
using System.IO;
namespace htmlWeb
{
 public class CreateHtm
{
private string fileName;
public String FileName{  get return fileName; }}
/// <summary>
/// 读取配置文件
/// </summary>
/// <param name="dirName">配置文件的路径名</param>
/// <param name="tag">配置文件中的标签名</param>
/// <returns>_replaceStr的长度</returns>
private int GetConfig(String dirName, String tag)
 {
    XmlDataDocument config = new XmlDataDocument();
    try{config.Load(dirName);}
    catch (Exception ex){ throw ex;}
    XmlNodeList list = config.GetElementsByTagName(tag);
    return list.Count;
}
 /// <summary>
///生成HTML文件
/// </summary>
/// <param name="configFileName">配置文件的路径名</param>
/// <param name="configTag">配置文件中的标签名</param>
/// <param name="dir">生成文件所在的文件夹的路径</param>
/// <param name="templateFile">模板文件的的路径</param>
/// <param name="param">要替换的字符串数组</param>
/// <returns>生成的文件名</returns>
public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param)
      {
           fileName = null;
           int count = GetConfig(configFileName, configTag);//(1)
           String[] _replaceStr = new String[count];//(2)
           try
           {
               FileStream tFile = File.Open(templateFile, FileMode.Open, FileAccess.Read);//(3)
              StreamReader reader = new StreamReader(tFile, Encoding.GetEncoding("gb2312"));
               StringBuilder sb = new StringBuilder(reader.ReadToEnd());
               reader.Close();//(4)
               for (int i = 0; i < count; i++)//(5)
               {
                   sb.Replace("$repalce[" + i + "]$", param[i]);
               }//(6)
               fileName = DateTime.Now.ToFileTime().ToString() + ".htm";//(7)
               FileStream rFile = File.Create(dir+"/" + fileName);//(8)
               StreamWriter writer = new StreamWriter(rFile, Encoding.GetEncoding("gb2312"));
               writer.Write(sb.ToString());
               writer.Flush();
              writer.Close();//(9)
           }
           catch (Exception ex)
           {
               throw ex;
          }
       }
       public void DeleteHtml(String dirName)
      {
           File.Delete(dirName);
       }
   }
}


  private int GetConfig(String dirName, String tag) 此方法用于读取配置文件(见后),主要是获得要替换的字符串的个数,在本类同体现为一个字符串数组
    public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param) 此方法用于生成静态页面(1)(2)行创建一个字符数组,数组长度为配置文件中的节点个数。(3)-(4)行读取模板文件,并用读到的模板文件的HTML代码生成一个StringBuilder对象。(5)-(6)行使用StringBuilderd对象的repalce()方法替换标记“$repalce[i]$"为真实的数据
(7)行生成一个唯一的文件名(防止覆盖)(8)-(9)行把新的字符串写到文件中。这样就生成了一个静态文件了。
下面看一个使用的实例:
一个文章管理系统,利用这个类来生成静态页面。
首先,建立一个配置文件 config.xml.此文件告诉使用者每个标记的含义。如下

 <?xml version="1.0" encoding="utf-8" ?>
 <htmlWeb version="1">
 <config>
    <article key="0" value="title"/>
    <article key="1" value="author"/>
     <article key="2" value="context"/>
    <aritcle key="3" value="date"/>
   </config>
 </htmlWeb> 

这样配置后,类会把标记数组0,1,2,3的位置分别替换为题目,作者,内容,发布日期。
看模板文件

 <head>
 <title>模板文件</title>
 </head>
 <body>
 <h1>这是一个简单的HTML页,朋友们可以根据自己的需要重新设计</h1>
 <li>标题:$replace[0]$</li>
 <li>作者:$replace[1]$</li>
<li>内容:$repalce[2]$</li>
<li>时间:$repalce[3]$</li>
</body>

使用方法:

 using System;
 using System.Data;
 using System.Configuration;
 using System.Web;
 using System.Web.Security;
 using System.Web.UI;
 using System.Web.UI.WebControls;
 using System.Web.UI.WebControls.WebParts;
 using System.Web.UI.HtmlControls;
namespace UseT
{
    public class Test

   {    
    public void main()

   {     
    string[] param = new string[4];
     param[0= "测试模板";
     param[1= "极限编程";
    param[2= "这是一个测试文章";
    param[3= "2011-2-11"

    htmlWeb.CreateHtm cs = new htmlWeb.CreateHtm();

    cs.MakeHtml("配置文件的路径“, ”article“, ”生成文件的路径“, "模板文件的路径", param) 
   }
    }
}

朋友们只要把相应的参数修改为实际的值,就生成静态文件了。

langchain1.X学习笔记-38-RAG之文档加载器(二)pdf、word、markdown、html、文件夹 加载pdf(PyPDFLoader),加载Markdown(UnstructuredMarkdownLoader),加载HTML(UnstructuredHTMLLoader),加载File Directory(DirectoryLoader)。 阅读详情

相关推荐

25、压电泵致动器变形计算与测量及转弯腔射流特性的有限元分析

本文围绕压电泵致动器的变形计算与测量以及转弯腔射流特性的有限元分析展开研究。通过建立有限元模型和抛物线拟合方法,对压电泵致动器的位移和变形体积进行了详细计算,并探讨了其对传感器性能的影响。同时,利用ANSYS软件对转弯腔在不同角速率输入下的射流特性进行了仿真分析,揭示了流场分布随角速率变化的规律。研究成果为压电流体角速率传感器的设计优化提供了理论依据和技术支持。

ooo22的博客 108

ASP.NET生成静态页面的方法

ASP.NET生成静态页面的方法 第一种方法:直接抓取asp.net的http输出流写入htm文件中  public void toHtml(string fileName)         {             StringWriter wr = new StringWriter();             string newPath = Server.MapPath

zhangwike的专栏 723

ASP.NET静态页面生成技术深入解析

Razor是ASP.NET MVC中用于定义视图模板的语法。它基于C#语言,并且提供了一种快速、流畅的方式来构建Web页面。Razor语法简洁并且易于理解,能够与HTML无缝集成。URL重写技术是指通过服务器配置或代码逻辑将用户访问的一个URL地址重写为另一个URL地址的过程。它在SEO和提升用户体验方面扮演了重要角色。URL重写的主要作用包括:美化URL:将动态URL转化为静态URL格式,使得URL更容易阅读和记忆。提升SEO。

weixin_42515340的博客 498

ASP.NET静态页面生成代码及分页

<br />ASP.NET静态页面生成代码 <br />1、静态模板页面 template.html,主要是定义了一些特殊字符,用来被替换。<br />1.            < !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">   <br />2.            < html>   <br />3.            < head>   <

聖輝 746

asp.net生成静态页面

ASP.NET生成静态页核心技术:HTMLPage文件夹,ModelHTML.htm文件中的ArticleTitle,ArticleContent都是要替换的区域WriteFile(dr["ArticleTitle"].ToString(), dr["ArticleContent"].ToString(), dr["ID"].ToString());1.前台

YANGZHONGBAO411的专栏 574

ASP.NET怎么样定时生成静态页面?

ASP.NET怎么样定时生成静态页面 以前用的是手工点击按钮生成的, 1/**////<summary> 2///生成静态页面 3///</summary> 4///<paramname="URL">声明保存网址的变量</param> 5...

dbnjuk102588的博客 146

asp.net生成静态html页面,asp.net生成静态页面

在这之前先要说明一下为什么要生成静态页面,众所周知,一般的静态页面的访问速率要远远高于动态网页,对于流量较大的网站来说,如果全部使用动态页面,那么服务器负载很重。页面执行效率不高。倘若将原本动态的网页通过编程方式转换成静态的(html/htm/shtml等)网页,将大大提高网站浏览效率!更有利于搜索引擎收录!那么在asp.net中如何实现这一功能呢?请看以下步骤:=================...

weixin_34614550的博客 390

asp.net生成静态html页面,ASP.NET MVC生成静态页面的方法

本文主要讲述了在asp.NET mvc中,页面静态化的方法。对于网站来说,生成html静态页面除了有利于seo外,还可以减轻网站的负载能力和提高网站性能。1.先付上封装好生成静态页的原代码:public class Common{#region 获取模板页的Html代码/// /// 获取页面的Html代码/// /// 模板页面路径/// 页面编码/// public static strin...

weixin_34266692的博客 764

HarmonyOS APP开发---“面对面“视频通话App,需要用到这个库

"面对面"要实现的是:用户 A 拨打视频电话给用户 B,B 接通后双方实时看到对方画面、听到对方声音,延迟在 200ms 以内。NAT 穿透:A 和 B 都在各自的家庭 WiFi 后面,怎么建立 P2P 连接?需要 ICE/STUN/TURN音频处理:扬声器声音别回灌到麦克风(AEC)、环境噪声要消除(ANS)、音量要自动调节(AGC)视频编解码:H.264/VP8/VP9 编解码 + 硬件加速带宽估计 + 拥塞控制:网络差时自动降码率,别卡成 PPTWebRTC。

OH_TPC的博客 221

HTML课程笔记补4

3.计对移动端的配置<meta name="viewport" content="width=device-width, initial-scale=1.0">注意:不能在<head><html><meta><script><style><title>等元素里使用。注意:不能在<head><html><meta><script><style><title>等元素里使用。注意:不可以在<head><html><meta><script><style><title>等元素中使用。

2601_96748017的博客 208

HTML 的 <meter> 元素

meter>是 HTML5 新增的语义化标签,用于展示已知范围内的标量测量值,例如磁盘使用量、CPU 占用率、投票结果、评分等。它以一个可视化的进度条/仪表形式呈现,让用户能直观地感知当前数值在整体范围中的位置。需要特别注意的是,<meter>只适合表示「已知最大值和最小值」的度量值。如果只是展示一个不确定的进度(比如文件上传进度),应该使用 <progress>元素,两者不要混淆。不同浏览器对 <meter>的默认外观略有差异。

IMPYLH的博客 287

Day 15 | 不改一行 HTML,给页面加上引号、角标和标签

本文是《30天精通CSS》专栏第 15 篇,订阅专栏不迷路。同一个效果,两种写法差在哪:一个真加了标签,一个只是画了个装饰content:伪元素的发动机进阶:attr() 让装饰读 HTML 里的值分界线:伪类单冒号,伪元素双冒号最容易翻车的地方:content 漏写,装饰凭空消失。

m0_53751797的博客 189

【AI动画】HTML 动画帧 vs GIF:生成方案、优劣对比,结合 AI 如何选择动画方案

标签:# 动画方案 #GIF #HTML 动画 #前端动画 #AI 视频生成 #Remotion #ComfyUI 前言

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 367

HTML 的 <p> 元素

p>元素虽然简单,却是构建网页文本内容的基础。掌握它的语法、嵌套规则和 CSS 配合技巧,能让你写出结构清晰、样式美观的页面。希望本文对你有所帮助,快去动手实践吧!

IMPYLH的博客 187

Python进阶教程:24_Markdown 转 HTML 零基础超详细教程

本文介绍了使用Python-Markdown库将Markdown文本转换为HTML的完整指南。主要内容包括:环境安装配置、基础文本和文件转换、常用扩展功能(表格、目录、代码高亮等)的使用方法。特别提供了完整的实战模板,包含内嵌CSS样式,可直接生成美观的HTML文档。同时总结了中文乱码、表格不显示等常见问题的解决方案,推荐新手优先使用Python-Markdown库,并配合extra扩展满足日常需求。

zhanghaha1314的博客 450

HTML 的 <ol> 元素

元素<ol>是 HTML 中用于创建有序列表(Ordered List)的标签。与无序列表 <ul>不同,<ol>中的每一项会自动带有编号,例如数字、字母或罗马数字,用于表示项目的先后顺序或优先级。一个最基本的有序列表示例:< ol > < li > 第一步:准备食材 </ li > < li > 第二步:加热锅具 </ li > < li > 第三步:翻炒食材 </ li > </ ol >

IMPYLH的博客 226

HTML课程笔记补3

input type="checkbox" name="hobby" value="smoke">抽烟。<input type="checkbox" name="hobby" value="drink">喝酒。<input type="checkbox" name="hobby" value="perm">烫头。<input type="radio" name="sex" value="female">女。<input type="radio" name="sex" value="male">男。

2601_96748017的博客 170

HTML系列教程:10_HTML 样式 — CSS 零基础详解

本文介绍了CSS的基础知识及其三种引入方式:行内样式(通过style属性直接写在HTML标签内)、内部样式表(在head中使用style标签定义)和外部样式表(通过link引入独立CSS文件)。文章详细讲解了CSS语法结构、常用属性和三大基础选择器(标签、类和ID选择器),并比较了不同引入方式的优先级。外部样式表因其复用性和结构分离特性成为项目开发首选。最后提供了综合示例和常见错误提示,帮助初学者掌握CSS基础应用。

zhanghaha1314的博客 411

T-CECA 112.1-2025 MLCC 第1部分:直流偏置电压老化测试 .pdf

本文件描述了多层陶瓷电容器(MLCC)直流偏置电压老化测试测试原理,规定了样品的测试步骤。本文件适用于电子设备中使用且用于表面安装的1类和2类MLCC电容器。这些电容器为无包封设计,带金属连接片或焊接带,主要应用于印制电路板(PCB)或在混合电路上的直接安装。本文件适用于最高额定电压不大于160V的MLCC产品的直流偏置老化测试

上一篇: IE8兼容模式(兼容模式其实就是使用IE7的显示引擎)打开网页
下一篇: 邮件发送解决方案
ynn0705
博客等级 码龄17年 34粉丝 12原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值