当前位置: 首页 > 编程日记 > 正文

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—基础架构篇)

从底层架构方面来看&#xff0c;VIEW 5.1最大的改进在于引入了Content-Based Read Cache(CBRC) 技术&#xff0c;大大降低了部署桌面虚拟化所带来的IOPS风暴&#xff0c;同时大大降低了对于存储的压力和成本&#xff0c;可谓桌面虚拟化领域的一大福音。 在以往的桌面虚拟化项目…

再见了,Python!!

结合我最近这些年的 Python 学习、开发经验&#xff0c;发现近90%的程序员在学 Python 时都会遇到下面这3个问题&#xff1a;1.想学Python&#xff0c;但不知从何学起&#xff0c;应用方向太多了也不知道该选择什么方向...2.基础入门看似简单&#xff0c;但是进阶实战就举步维艰…

alert在asp.net中如何使用??

改成这样&#xff1a;string str"<script languagejavascript>alert(省局数据不能进行修改&#xff01;);</script>";Page.RegisterStartupScript("dd",str); 提示成功后转到别的页面Response.Write("<script>window.alert(提示语…

.NET工程师必须掌握的知识点

以下内容是转载的 Microsoft SQL Server 数据库 一、创建和维护数据库 1、数据库 SQL Server 数据库的组成部分&#xff1f;&#xff08;参见联机丛书&#xff09;   如何保证数据库的完整性、安全性、并发性&#xff1f;   数据库设计创建步骤&#xff1f;&#xff08;参见…

@程序员:这些瓜没吃到,可以告别互联网了!

最近&#xff0c;程序员届有一个重大好消息&#xff0c;可能很多人还不知道&#xff0c;那就是&#xff1a;国内某些城市已经开始程序员人才补贴了&#xff01;对于人工智能公司的项目开发、人才引进、科技研发&#xff0c;最高按照国拨经费的30%给予配套支持&#xff0c;单个项…

日志分析工具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备用 -------------------------------------------- 需求&#xff1a; 设计&#xff1a; 原理&#xff1a;日志的作用&#xff0c;1&a…

正则表达式语法规则收集

turnmissile 的 Blog http://blog.csdn.net/turnmissile/ Microsoft已经把正则表达式的规则收录在了msdn里面了&#xff0c;有兴趣的朋友可以自己去研究一下(ms-help://MS.MSDNQTR.2003OCT.1033/cpgenref/html/cpconRegularExpressionsLanguageElements.htm)&#xff0c;这里罗…

Python实现信息自动配对爬虫排版程序

作者 | 李秋键责编 | 晋兆雨头图 | CSDN付费下载自视觉中国在很多的公司项目中&#xff0c;常常有很多对office项目的比较机械化的操作&#xff0c;在这里就可以借助python实现对office的合理排版。而这里我们就将借助海尔公司的出货表爬取对应图片信息&#xff0c;并重新排版成…

关于2012年度土建工程专业中级专业技术资格考试有关问题的通知

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

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

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

做出的C++选择以及背后的原因

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

拖放 DataGrid 列--来自MSDN

发布日期&#xff1a; 09/19/2004| 更新日期&#xff1a; 09/19/2004Chris SanoMicrosoft Corporation 摘要&#xff1a;了解如何利用基本的 GDI 功能&#xff0c;从而通过 DataGrid 控件获得可视化效果。通过跨越托管边界进行调用&#xff0c;可以利用本机 GDI 功能来执行屏幕…

最近很火的最新一代国际视频标准 VVC 到底是什么?阿里专家为你揭秘

作者 | 叶琰&#xff0c;阿里巴巴达摩院XG实验室视频标准团队负责人责编 | 夕颜头图 | CSDN付费下载自视觉中国2020年7月1日晚上&#xff08;日内瓦时间&#xff09;&#xff0c;第十九次JVET会议在线上落下帷幕&#xff0c;新一代国际视频编码标准VVC第一版&#xff08;Versat…

nesC编程入门

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

用asp.net实现的把本文推荐给好友功能

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

Access sql语句创建表及字段类型

创建一张空表&#xff1a; Sql"Create TABLE [表名]" 创建一张有字段的表&#xff1a; Sql"Create TABLE [表名]([字段名1] MEMO NOT NULL, [字段名2] MEMO, [字段名3] COUNTER NOT NULL, [字段名4] DATETIME, [字段名5] TEXT(200), [字段名6] TEXT(200)) 字段类…

“刚毕业1年,做Python能挣多少?”网友:吹的不多..

01现状揭秘&#xff1a;Python的火持续燃烧程序员&#xff1a;心态崩了&#xff01;2020年转眼已经大半&#xff0c;在近几个月的榜单中&#xff0c;Python已经连续走上卫冕的道路&#xff0c;并且与Java的差距拉得更远了一些。以往与Java常呈现你追我赶之势&#xff0c;而这一…

Java编程的逻辑 (39) - 剖析LinkedList

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

运用.NET读写Windows注册编辑表

作者&#xff1a; 冉林仓 www.ASPCool.com 时间:2001-11-9 如果你曾经使用过RegOpenKeyEx、RegCreateKeyEx、RegCloseKey等Win32 API函数读写过注册编辑表&#xff0c;你肯定非常熟悉这些复杂的Registry函数。相反&#xff0c;在.NET框架中&#xff0c;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猫&#xff08;ID:python_cat&#xff09;众所周知&#xff0c;Python中没有所谓的main函数&#xff0c;但是网上经常有文章提到“ Python的main函数”和“建议编写main函数”。其实&#xff0c;可能他们是想模仿真正的main函数&#xff0c;但是…

HTTP访问服务的相关解释

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

关于ASP.Net中的时间处理

作者&#xff1a; 飞刀 www.ASPCool.com 时间:2001-8-8 这里我想谈谈ASP.Net中对时间的处理 在ASP.Net中&#xff0c;M$为我们提供一种名为DateTime的对象&#xff0c;我们用这个对象来取得当前的时间。比如&#xff1a; DateTime dtDateTime.Now; 在上面…

还缺30万人!程序员2020年要过好日子了……

最近&#xff0c;程序员届有一个重大好消息&#xff0c;可能很多人还不知道&#xff0c;那就是&#xff1a;国内某些城市已经开始程序员人才补贴了&#xff01;对于人工智能公司的项目开发、人才引进、科技研发&#xff0c;最高按照国拨经费的30%给予配套支持&#xff0c;单个项…

淘宝海量数据库之二:一致性选择

众所周知&#xff0c;一致性是数据最关键的属性之一。2000年&#xff0c;Eric Brewer教授在ACM分布式计算年会上指出了著名的CAP理论&#xff1a; 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 &#xff0b; c 强制中断这条命令/前后是没有空格的快捷键&#xff1a;TAB 命令 路径补全符号&#xff1a;; 多个命令的分隔符/ 根或者路径的分隔符。> 标准输出重定向…

Session 详解

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

实现一个模拟CMD.exe命令编辑模式执行与显示的Delphi控件

cmd.exe这个东西是Windows系统自带的执行Dos的一个灰常好的人机命令交互的执行方式&#xff0c;现在很多脚本语言也都带有这种即时解释的人机模式。当下由于工程的需要&#xff0c;也要做一个类似命令解释显示的编辑器&#xff0c;基本上完全模拟Cmd.exe的这种交互模式&#xf…

谷歌这波大动作,暴露了什么信号?

我们都知道谷歌爸爸收购了Cask Data一家公司。长期以来&#xff0c;谷歌致力于推动围绕 GoogleCloud 的企业业务&#xff0c;但在这方面一直被亚马逊和微软吊打&#xff0c;这次的收购正是为了弥补自身的短板。被收购的 Cask Data 是一家专门提供基于Hadoop的大型数据分析服务解…

OSChina 周一乱弹 ——喝不到放心奶

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