Asp.net动态生成html页面
作者:网际浪子专栏(曾用名littlehb) http://blog.csdn.net/littlehb/
适用于:Microsoft ASP.NET
摘要:asp.net动态生成html页面,适用
简介
此功能适用于后台数据库功能不强的web站点,即大部分文本不是存放在数据库的记录中,而是放在html文件或者xml文件中,仅仅把索引放到数据库中,如文章标题、类别、查询关键字等。这样适合于后台没有诸如MS Sql Server这样的数据库支持的Web站点。
适用于新闻发布系统,比如sina、163等都是采用动态生成html页面的。
适用于需动态定制页面的程序。比如论坛、聊天室等。可以加载定制好的html页面,来加强美观。
思路
1. 利用如Dw-Mx这样的工具生成html格式的模板,在需要添加格式的地方加入特殊标记(如$htmlformat$),动态生成文件时利用代码读取此模板,然后获得前台输入的内容,添加到此模板的标记位置中,生成新文件名后写入磁盘,写入后再向数据库中写入相关数据。
2. 使用后台代码硬编码Html文件,可以使用HtmlTextWriter类来写html文件。
优点
1. 可以建立非常复杂的页面,利用包含js文件的方法,在js文件内加入document.write()方法可以在所有页面内加入如页面头,广告等内容。
2. 静态html文件利用MS Windows2000的Index Server可以建立全文搜索引擎,利用asp.net可以以DataTable的方式得到搜索结果。而Win2000的Index服务无法查找xml文件的内容。如果包括了数据库搜索与Index索引双重查找,那么此搜索功能将非常强大。
3. 节省服务器的负荷,请求一个静态的html文件比一个aspx文件服务器资源节省许多。
缺点
思路二: 如果用硬编码的方式,工作量非常大,需要非常多的html代码。调试困难。而且使用硬编码生成的html样式无法修改,如果网站更换样式,那么必须得重新编码,给后期带来巨大的工作量。
因此这里采用的是第一种思路
示列代码
1.定义(template.htm)html模板页面
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body >
<table $htmlformat[0] height="100%" border="0" width="100%" cellpadding="10" cellspacing="0" bgcolor="#eeeeee" style="border:1px solid #000000">
<tr>
<td width="100%" valign="middle" align="left">
<span style="color: $htmlformat[1];font-size: $htmlformat[2]">$htmlformat[3]</span>
</td>
</tr>
</table>
</body>
</html>
2.asp.net代码:
//---------------------读html模板页面到stringbuilder对象里----
string[] format=new string[4];//定义和htmlyem标记数目一致的数组
StringBuilder htmltext=new StringBuilder();
try
{
using (StreamReader sr = new StreamReader("存放模板页面的路径和页面名"))
{
String line;
while ((line = sr.ReadLine()) != null)
{
htmltext.Append(line);
}
sr.Close();
}
}
catch
{
Response.Write("<Script>alert('读取文件错误')</Script>");
}
//---------------------给标记数组赋值------------
format[0]="background=/"bg.jpg/"";//背景图片
format[1]= "#990099";//字体颜色
format[2]="150px";//字体大小
format[3]= "<marquee>生成的模板html页面</marquee>";//文字说明
//----------替换htm里的标记为你想加的内容
for(int i=0;i<4;i++)
{
htmltext.Replace("$htmlformat["+i+"]",format[i]);
}
//----------生成htm文件------------------――
try
{
using(StreamWriter sw=new StreamWriter("存放路径和页面名",false,System.Text.Encoding.GetEncoding("GB2312")))
{
sw.WriteLine(htmltext);
sw.Flush();
sw.Close();
}
}
catch
{
Response.Write ("The file could not be wirte:");
}
小结
用此方法可以方便的生成html文件。程序使用了是循环替换,因此对需替换大量元素的模板速度非常快。
如有问题或错误请于我联系。jxf_yx@163.com
相关文章:

View 5.1 重装上阵(4—基础架构篇)
从底层架构方面来看,VIEW 5.1最大的改进在于引入了Content-Based Read Cache(CBRC) 技术,大大降低了部署桌面虚拟化所带来的IOPS风暴,同时大大降低了对于存储的压力和成本,可谓桌面虚拟化领域的一大福音。 在以往的桌面虚拟化项目…
再见了,Python!!
结合我最近这些年的 Python 学习、开发经验,发现近90%的程序员在学 Python 时都会遇到下面这3个问题:1.想学Python,但不知从何学起,应用方向太多了也不知道该选择什么方向...2.基础入门看似简单,但是进阶实战就举步维艰…

alert在asp.net中如何使用??
改成这样:string str"<script languagejavascript>alert(省局数据不能进行修改!);</script>";Page.RegisterStartupScript("dd",str); 提示成功后转到别的页面Response.Write("<script>window.alert(提示语…

.NET工程师必须掌握的知识点
以下内容是转载的 Microsoft SQL Server 数据库 一、创建和维护数据库 1、数据库 SQL Server 数据库的组成部分?(参见联机丛书) 如何保证数据库的完整性、安全性、并发性? 数据库设计创建步骤?(参见…
@程序员:这些瓜没吃到,可以告别互联网了!
最近,程序员届有一个重大好消息,可能很多人还不知道,那就是:国内某些城市已经开始程序员人才补贴了!对于人工智能公司的项目开发、人才引进、科技研发,最高按照国拨经费的30%给予配套支持,单个项…

日志分析工具splunt
实验环境 网关 classroom 172.25.8.254 workstation 172.25.8.9 server a-jeth0 172.25.8.10-外网 eth1 192.168.0.x内网 eth2 192.168.1.x备用 -------------------------------------------- 需求: 设计: 原理:日志的作用,1&a…

正则表达式语法规则收集
turnmissile 的 Blog http://blog.csdn.net/turnmissile/ Microsoft已经把正则表达式的规则收录在了msdn里面了,有兴趣的朋友可以自己去研究一下(ms-help://MS.MSDNQTR.2003OCT.1033/cpgenref/html/cpconRegularExpressionsLanguageElements.htm),这里罗…
Python实现信息自动配对爬虫排版程序
作者 | 李秋键责编 | 晋兆雨头图 | CSDN付费下载自视觉中国在很多的公司项目中,常常有很多对office项目的比较机械化的操作,在这里就可以借助python实现对office的合理排版。而这里我们就将借助海尔公司的出货表爬取对应图片信息,并重新排版成…

关于2012年度土建工程专业中级专业技术资格考试有关问题的通知
关于2012年度土建工程专业中级专业技术资格考试有关问题的通知 现将2012年度土建工程专业初、中级专业技术资格考试、报名、培训工作有关事项通知如下: 一、考试组织 湖南省住房和城乡建设厅、省人力资源和社会保障厅联合成立领导小组,负责对考试工作进行…

Android自定义控件NumberCircleProgressBar(圆形进度条)的实现
Android自定义控件NumberCircleProgressBar(圆形进度条)的实现

做出的C++选择以及背后的原因
要让出资人明白你做出的C选择以及背后的原因。也许出资人会有更容易操作、更快实现的好主意。3、为你提供的日期说明信心范围。很可能管理层不明白你的估算意味着什么,而且你也有可能不理解他们所要的东西。 2.变量的C使用范围每个变量的使用范围只在定义…

拖放 DataGrid 列--来自MSDN
发布日期: 09/19/2004| 更新日期: 09/19/2004Chris SanoMicrosoft Corporation 摘要:了解如何利用基本的 GDI 功能,从而通过 DataGrid 控件获得可视化效果。通过跨越托管边界进行调用,可以利用本机 GDI 功能来执行屏幕…
最近很火的最新一代国际视频标准 VVC 到底是什么?阿里专家为你揭秘
作者 | 叶琰,阿里巴巴达摩院XG实验室视频标准团队负责人责编 | 夕颜头图 | CSDN付费下载自视觉中国2020年7月1日晚上(日内瓦时间),第十九次JVET会议在线上落下帷幕,新一代国际视频编码标准VVC第一版(Versat…

nesC编程入门
1.接口 NesC程序主要由各式组件(component)构成,组件和组件之间通过特定的接口(interface)互相沟通。一个接口内声明了提供相关服务的方法(C语言函数)。例如数据读取接口(Read&#…

用asp.net实现的把本文推荐给好友功能
作者: 飞鹰 www.ASPCool.com 时间:2001-11-25 17:39:07 ///<summary> ///<author>飞鹰ASPCool.com</author> ///<description>本文用asp.net实现把此文推荐给好友的功能。</desciption> ///<copyright>ASP酷技术资讯…

Access sql语句创建表及字段类型
创建一张空表: Sql"Create TABLE [表名]" 创建一张有字段的表: Sql"Create TABLE [表名]([字段名1] MEMO NOT NULL, [字段名2] MEMO, [字段名3] COUNTER NOT NULL, [字段名4] DATETIME, [字段名5] TEXT(200), [字段名6] TEXT(200)) 字段类…
“刚毕业1年,做Python能挣多少?”网友:吹的不多..
01现状揭秘:Python的火持续燃烧程序员:心态崩了!2020年转眼已经大半,在近几个月的榜单中,Python已经连续走上卫冕的道路,并且与Java的差距拉得更远了一些。以往与Java常呈现你追我赶之势,而这一…

Java编程的逻辑 (39) - 剖析LinkedList
本系列文章经补充和完善,已修订整理成书《Java编程的逻辑》,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http://it…

运用.NET读写Windows注册编辑表
作者: 冉林仓 www.ASPCool.com 时间:2001-11-9 如果你曾经使用过RegOpenKeyEx、RegCreateKeyEx、RegCloseKey等Win32 API函数读写过注册编辑表,你肯定非常熟悉这些复杂的Registry函数。相反,在.NET框架中,Registry和RegistryK…

使用正则表达式抽取新闻/BBS网页发表时间
package org.apache.nutch.parse.html; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 分析时间戳 * * author xum * */ public class Publish…
为什么Python没有main函数?
作者 | 豌豆花下猫来源 | Python猫(ID:python_cat)众所周知,Python中没有所谓的main函数,但是网上经常有文章提到“ Python的main函数”和“建议编写main函数”。其实,可能他们是想模仿真正的main函数,但是…

HTTP访问服务的相关解释
一、访问网站的基本流程第一步:客户端用户在浏览器输入www.51cto.com网站,回车后,系统首先会查找系统本地的DNS缓存及hosts文件信息,确定是否存在www.51cto.com余名对应的IP解析记录,如果有就直接获取IP地址࿰…

关于ASP.Net中的时间处理
作者: 飞刀 www.ASPCool.com 时间:2001-8-8 这里我想谈谈ASP.Net中对时间的处理 在ASP.Net中,M$为我们提供一种名为DateTime的对象,我们用这个对象来取得当前的时间。比如: DateTime dtDateTime.Now; 在上面…
还缺30万人!程序员2020年要过好日子了……
最近,程序员届有一个重大好消息,可能很多人还不知道,那就是:国内某些城市已经开始程序员人才补贴了!对于人工智能公司的项目开发、人才引进、科技研发,最高按照国拨经费的30%给予配套支持,单个项…

淘宝海量数据库之二:一致性选择
众所周知,一致性是数据最关键的属性之一。2000年,Eric Brewer教授在ACM分布式计算年会上指出了著名的CAP理论: Brewer, E. A. 2000. Towards robust distributed systems. In Proceedings of the 19th Annual ACM Symposium on Principles of…

Linux 小记录!
rmdir与 rm -r 的不同处前者这能删除目录 后者目录和文件都可以删除cp 和echo 都会覆盖原有的内容ctrl + c 强制中断这条命令/前后是没有空格的快捷键:TAB 命令 路径补全符号:; 多个命令的分隔符/ 根或者路径的分隔符。> 标准输出重定向…

Session 详解
作者: heallven www.ASPCool.com 时间:2004-8-28 阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解。否则,阅读过程中会在相应的内容上遇到不同程度的问题。 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的S…

实现一个模拟CMD.exe命令编辑模式执行与显示的Delphi控件
cmd.exe这个东西是Windows系统自带的执行Dos的一个灰常好的人机命令交互的执行方式,现在很多脚本语言也都带有这种即时解释的人机模式。当下由于工程的需要,也要做一个类似命令解释显示的编辑器,基本上完全模拟Cmd.exe的这种交互模式…
谷歌这波大动作,暴露了什么信号?
我们都知道谷歌爸爸收购了Cask Data一家公司。长期以来,谷歌致力于推动围绕 GoogleCloud 的企业业务,但在这方面一直被亚马逊和微软吊打,这次的收购正是为了弥补自身的短板。被收购的 Cask Data 是一家专门提供基于Hadoop的大型数据分析服务解…

OSChina 周一乱弹 ——喝不到放心奶
2019独角兽企业重金招聘Python工程师标准>>> 【今日歌曲推荐】 陈李雨声 : 梦想还是要有的 万一实现了呢。《secret base》 《secret base》- 茅野愛衣 / 戸松遥 / 早見沙織 手机党少年们想听歌,请使劲儿戳(这里). 紫King : 这个大…