Asp.net动态生成html页面
+ t" C& l) \5 b
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 N7 Q/ f _/ a+ b! Z, u2 t电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<html>
8 {1 x' c5 J3 p7 r: q) ?打造最好的电脑自学交流论坛<head>, g/ U, y, K7 M4 Q
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
% J) E- c6 |2 l6 w& a5 R我爱电脑技术社区--打造最好的电脑技术自学交流平台<title>无标题文档</title>打造最好的电脑自学交流论坛; B' E% ?% v) n1 } W4 V
</head>
3 ?+ N t# g6 e' M
, w1 n* H9 i1 F打造最好的电脑自学交流论坛<body>
4 A7 s, ]2 }6 O/ M/ x' h5 U打造最好的电脑自学交流论坛此功能适用于后台数据库功能不强的web站点,即大部分文本不是存放在数据库的记录中,而是放在html文件或者xml文件中,仅仅把索引放到数据库中,如文章标题、类别、查询关键字等。这样适合于后台没有诸如MS 7 R' H' F5 g6 U# w) q" K* C
Sql Server这样的数据库支持的Web站点。电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站1 M% j8 y9 s4 b4 j# K) w) J' k
<p>适用于新闻发布系统,比如sina、163等都是采用动态生成html页面的。</p>
1 v4 I" ]3 R- b6 G0 q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<p>适用于需动态定制页面的程序。比如论坛、聊天室等。可以加载定制好的html页面,来加强美观。</p>
3 B0 n8 d( w7 G7 X- B, |4 Q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<p>思路</p>
' x) K& o7 G, p5 E9 ~ q+ s+ {; U我爱电脑技术论坛<p>1. 利用如Dw-Mx这样的工具生成html格式的模板,在需要添加格式的地方加入特殊标记(如$htmlformat$),动态生成文件时利用代码读取此模板,然后获得前台输入的内容,添加到此模板的标记位置中,生成新文件名后写入磁盘,写入后再向数据库中写入相关数据。</p>我爱电脑技术论坛2 ^/ p" q: m9 Y' |1 e4 b
<p>2. 使用后台代码硬编码Html文件,可以使用HtmlTextWriter类来写html文件。</p>电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站& P7 ]$ B, p6 ] y# z
<p>优点</p>
/ A1 ?8 H2 i* u3 Q, q# @电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<p>1. 可以建立非常复杂的页面,利用包含js文件的方法,在js文件内加入document.write()方法可以在所有页面内加入如页面头,广告等内容。</p>
3 _ B2 P4 H$ U5 X* X我爱电脑技术社区--打造最好的电脑技术自学交流平台<p>2. 静态html文件利用MS Windows2000的Index Server可以建立全文搜索引擎,利用asp.net可以以DataTable的方式得到搜索结果。而Win2000的Index服务无法查找xml文件的内容。如果包括了数据库搜索与Index索引双重查找,那么此搜索功能将非常强大。</p>
0 q. l! a4 Y1 `3 E' p/ N我爱电脑技术社区--打造最好的电脑技术自学交流平台<p>3. 节省服务器的负荷,请求一个静态的html文件比一个aspx文件服务器资源节省许多。</p>
# y9 W9 `& C5 V+ s& _www.520diannao.com<p>缺点</p>; l/ {8 X3 a4 Y3 b# V. r
<p>思路二: 如果用硬编码的方式,工作量非常大,需要非常多的html代码。调试困难。而且使用硬编码生成的html样式无法修改,如果网站更换样式,那么必须得重新编码,给后期带来巨大的工作量。</p>
4 M3 n+ Y( {/ T/ j) G# }6 g<p>因此这里采用的是第一种思路</p>我爱电脑技术社区--打造最好的电脑技术自学交流平台4 |8 O1 O, _: m* G( H2 I
<p>示列代码</p>
7 P2 B4 \ b9 v' ^$ N2 z电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<p>1.定义(template.htm)html模板页面</p>
5 p' e- D, b' J8 i- h4 D4 X打造最好的电脑自学交流论坛<p> <html></p>
, ^5 k. _/ X1 A9 c- F% [我爱电脑技术社区--打造最好的电脑技术自学交流平台<p> <head></p>
! D3 q2 e* Y9 }www.520diannao.com<p> <title></title></p>
0 H- {' v# G; t8 w, Q' K+ n<p> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></p>
5 W- l2 n4 F: c9 |' f" Y* [www.520diannao.com<p> </head></p>
: w6 u! t9 z$ F+ ?! j7 G我爱电脑技术论坛<p> <body ></p>
4 H A n% ~! a7 b我爱电脑技术社区--打造最好的电脑技术自学交流平台<p> <table $htmlformat[0] height="100%" border="0" width="100%" 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站) ^* v/ Y- \2 M6 @; ~ Z
cellpadding="10" cellspacing="0" bgcolor="#eeeeee" & z* G# f* O( ` d
style="border:1px solid #000000"></p>www.520diannao.com7 I8 H5 Y9 a; D
<p> <tr></p>打造最好的电脑自学交流论坛$ M0 ^8 X4 k. `- o, k
<p> <td width="100%" valign="middle" align="left"></p>我爱电脑技术社区--打造最好的电脑技术自学交流平台( C" d* |! _: _, b5 ^
<p> <span style="color: $htmlformat[1];font-size: $htmlformat[2]">$htmlformat[3]</span></p>
0 M f) D V# V, C<p> </td></p>电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站# \6 r* Z# @, p8 X
<p> </tr></p>我爱电脑技术论坛3 M* |1 r. f4 D+ k( r+ U% H0 q
<p> </table></p>
! B& J( O8 ^) h/ r. Z& ^5 j2 A我爱电脑技术社区--打造最好的电脑技术自学交流平台<p> </body></p>我爱电脑技术社区--打造最好的电脑技术自学交流平台) ?2 t; Z @8 U0 M6 r6 U" G: h6 i
<p></html></p>www.520diannao.com; b/ h' j& |+ p' T
<p>2.asp.net代码:</p>电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 F/ o8 B' p P4 i c. V
<p> //---------------------读html模板页面到stringbuilder对象里----</p>
! C$ H! L6 e1 Q+ Y+ b<p> string[] format=new string[4];//定义和htmlyem标记数目一致的数组</p>
3 y5 W2 d, r/ X2 N6 P<p> StringBuilder htmltext=new StringBuilder();</p>电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站- M+ c5 S& b+ R5 L% x
<p> try </p>( m$ J* V( U9 J& v7 g8 {& _9 X3 o
<p> {</p>
: U! @* S4 r2 P J1 ]我爱电脑技术社区--打造最好的电脑技术自学交流平台<p> using (StreamReader sr = new StreamReader("存放模板页面的路径和页面名")) </p>打造最好的电脑自学交流论坛! y. w, _- Y: v r. k, d
<p> {</p>
) Z$ f5 E" y7 R我爱电脑技术社区--打造最好的电脑技术自学交流平台<p> String line;</p>打造最好的电脑自学交流论坛* s3 \! g6 m* d: |
<p> while ((line = sr.ReadLine()) != null) </p>打造最好的电脑自学交流论坛' r {9 |0 z6 l6 j+ n% ^6 p
<p> {</p>
6 O8 z) O+ U% J4 r ?9 j我爱电脑技术社区--打造最好的电脑技术自学交流平台<p> htmltext.Append(line);</p>我爱电脑技术社区--打造最好的电脑技术自学交流平台3 [( J, J+ _% m% L$ B# V9 }7 `& n
<p> }</p>
& y9 Y( B; r! J8 p3 A" m* M我爱电脑技术社区--打造最好的电脑技术自学交流平台<p> sr.Close();</p>4 D' B- ]) k* \* l
<p> }</p>我爱电脑技术社区--打造最好的电脑技术自学交流平台9 Z9 l1 l0 ]. {9 q( Z- c: K9 |
<p> }</p>
7 x0 [% B) E" U$ Q/ R0 S# W5 S打造最好的电脑自学交流论坛<p> catch </p>
/ q' ]; i% c; K! q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<p> {</p>
" h% c4 ^% o6 E' I0 j+ U9 K0 P, nwww.520diannao.com<p> Response.Write("<Script>alert('读取文件错误')</Script>");</p>
& Z/ C. }2 A' C& K5 r% Y1 jwww.520diannao.com<p> }</p>我爱电脑技术社区--打造最好的电脑技术自学交流平台 d7 e1 h2 u, R+ J/ N( o6 B& F
<p>//---------------------给标记数组赋值------------</p>电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站1 ~. J @$ f' P5 a
<p> format[0]="background=""bg.jpg""";//背景图片</p>
6 U" ~. L6 o ?! G) f" T. S& m( N<p>format[1]="#990099";//字体颜色</p>我爱电脑技术论坛 o3 v2 @1 t9 u3 O6 e9 R% h
<p>format[2]="150px";//字体大小</p>电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站7 u: S4 t4 l) R7 f1 A# O
<p>format[3]= "<marquee>生成的模板html页面</marquee>";//文字说明</p>
3 z, Q% Z5 O* p3 l* Y- W) L5 ?打造最好的电脑自学交流论坛<p>//----------替换htm里的标记为你想加的内容</p>www.520diannao.com, Z, G- V9 M+ E1 f% T# }5 X
<p>for(int i=0;i<4;i++)</p>打造最好的电脑自学交流论坛1 n: ?# W' F% k6 ?" @3 _
<p> {</p>
9 l6 x6 h* h; v& s6 @5 P. W _我爱电脑技术论坛<p> htmltext.Replace("$htmlformat["+i+"]",format);</p>
0 [+ }6 c0 U1 `' x" Y<p>}</p>我爱电脑技术论坛2 j4 l+ U' p& D( N+ e N
<p>//----------生成htm文件------------------――</p>
0 s1 \' Y( X: x/ X. y4 q+ \" O我爱电脑技术社区--打造最好的电脑技术自学交流平台<p>try</p>www.520diannao.com) B3 K* L: C% i2 d/ o2 P
<p> {</p>我爱电脑技术论坛5 _& X4 Z6 s" `( _, c( T2 \! }( Y
<p> using(StreamWriter sw=new StreamWriter("存放路径和页面名",false,System.Text.Encoding.GetEncoding("GB2312")))</p>
s2 u; G4 D) p/ e* P; F电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<p> {</p>
; X6 A! J! [! I* O电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<p> sw.WriteLine(htmltext);</p>
" t. |3 @: K0 p5 mwww.520diannao.com<p> sw.Flush();</p>
( G. Y! O& ]/ a3 ?<p> sw.Close();</p>
2 g; @8 g2 @' b+ y% H4 u: J<p> }</p>
- n% S& E8 a8 w! `% \<p> }</p>电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站' x2 o l. g! k) R4 }5 O, \
<p> catch</p>打造最好的电脑自学交流论坛0 _/ y; b6 y& P$ L6 `! G
<p> { </p>电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站* ^( [0 x5 ~. n* b4 O, v8 e
<p> Response.Write ("The file could not be wirte:");</p>
" G9 Y- n4 ^) R! v8 X: f& I2 T打造最好的电脑自学交流论坛<p> }</p>
% L K4 P8 f' H k8 G2 g+ u打造最好的电脑自学交流论坛<p>小结</p>
; Y2 D+ b" i8 B) ~! ?$ Z+ Y5 E/ t2 x我爱电脑技术论坛<p>用此方法可以方便的生成html文件。程序使用了是循环替换,因此对需替换大量元素的模板速度非常快。</p>www.520diannao.com0 Z. E1 x2 V; r( w) `
<p></p>
/ I* u# W# Y# p4 s我爱电脑技术社区--打造最好的电脑技术自学交流平台</body>打造最好的电脑自学交流论坛1 c) f- B! k! |* u+ t; }0 g9 A
</html>