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 模板页面
适用于 新闻 发布 系统 ,比如 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 代码:
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 文件。程序使用了是循环替换,因此对需替换大量元素的模板速度非常快。
小结
用此方法可以方便的生成 html 文件。程序使用了是循环替换,因此对需替换大量元素的模板速度非常快。