在ASP.NET 2.0中,有时候需要对ASP.NET生成的HTML代码进行处理,或者是保存成静态文件。ASP.NET 提供了直接将请求保存成文件的方法:HttpRequest.SaveAs方法。下面这个方法就是在ASP.NET 2.0中得到ASP.NET生成的HTML代码,同时,生成一个静态文件的方法。
C#
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
%>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
script
runat
="server"
>
//
计算数据,完全可以从数据看取得
ICollection CreateDataSource( ) { System.Data.DataTable dt
=
new
System.Data.DataTable(); System.Data.DataRow dr; dt.Columns.Add(
new
System.Data.DataColumn(
"
学生班级
"
,
typeof
(System.String))); dt.Columns.Add(
new
System.Data.DataColumn(
"
学生姓名
"
,
typeof
(System.String))); dt.Columns.Add(
new
System.Data.DataColumn(
"
语文
"
,
typeof
(System.Decimal))); dt.Columns.Add(
new
System.Data.DataColumn(
"
数学
"
,
typeof
(System.Decimal))); dt.Columns.Add(
new
System.Data.DataColumn(
"
英语
"
,
typeof
(System.Decimal))); dt.Columns.Add(
new
System.Data.DataColumn(
"
计算机
"
,
typeof
(System.Decimal)));
for
(
int
i
=
0
; i
<
50
; i
++
) { System.Random rd
=
new
System.Random(Environment.TickCount
*
i); ; dr
=
dt.NewRow(); dr[
0
]
=
"
班级
"
+
i.ToString(); dr[
1
]
=
"
【孟子E章】
"
+
i.ToString(); dr[
2
]
=
System.Math.Round(rd.NextDouble()
*
100
,
2
); dr[
3
]
=
System.Math.Round(rd.NextDouble()
*
100
,
2
); dr[
4
]
=
System.Math.Round(rd.NextDouble()
*
100
,
2
); dr[
5
]
=
System.Math.Round(rd.NextDouble()
*
100
,
2
); dt.Rows.Add(dr); } System.Data.DataView dv
=
new
System.Data.DataView(dt);
return
dv; } protected
void
Page_Load( object sender, EventArgs e ) {
if
(
!
IsPostBack) { GridView1.DataSource
=
CreateDataSource(); GridView1.DataBind(); } } protected override
void
Render( HtmlTextWriter writer ) { System.IO.StringWriter html
=
new
System.IO.StringWriter(); System.Web.UI.HtmlTextWriter tw
=
new
System.Web.UI.HtmlTextWriter(html); base.Render(tw); System.IO.StreamWriter sw; sw
=
new
System.IO.StreamWriter(Server.MapPath(
"
a.htm
"
),
false
, System.Text.Encoding.Default); sw.Write(html.ToString()); sw.Close(); tw.Close(); Response.Write(html.ToString()); }
</
script
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
>
<
title
>
得到ASP.NET生成的HTML
</
title
>
</
head
>
<
body
>
<
form
id
="Form1"
runat
="server"
>
<
asp:GridView
ID
="GridView1"
runat
="server"
Font-Size
="12px"
BackColor
="#FFFFFF"
GridLines
="Both"
CellPadding
="4"
Width
="560"
>
<
HeaderStyle
BackColor
="#EDEDED"
Height
="26px"
/>
</
asp:GridView
>
</
form
>
</
body
>
</
html
>
VB.NET
<%
@ Page Language
=
"
VB
"
%>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
script
runat
="server"
>
Function CreateDataSource() As ICollection Dim dt As System.Data.DataTable
=
New System.Data.DataTable Dim dr As System.Data.DataRow dt.Columns.Add(New System.Data.DataColumn(
"
学生班级
"
, GetType(System.String))) dt.Columns.Add(New System.Data.DataColumn(
"
学生姓名
"
, GetType(System.String))) dt.Columns.Add(New System.Data.DataColumn(
"
语文
"
, GetType(System.Decimal))) dt.Columns.Add(New System.Data.DataColumn(
"
数学
"
, GetType(System.Decimal))) dt.Columns.Add(New System.Data.DataColumn(
"
英语
"
, GetType(System.Decimal))) dt.Columns.Add(New System.Data.DataColumn(
"
计算机
"
, GetType(System.Decimal))) Dim i As Integer
=
0
For i
=
0
To
50
-
1
Dim rd As System.Random
=
New System.Random(Environment.TickCount
*
i) dr
=
dt.NewRow dr(
0
)
=
"
班级
"
+
i.ToString dr(
1
)
=
"
【孟子E章】
"
+
i.ToString dr(
2
)
=
System.Math.Round(rd.NextDouble
*
100
,
2
) dr(
3
)
=
System.Math.Round(rd.NextDouble
*
100
,
2
) dr(
4
)
=
System.Math.Round(rd.NextDouble
*
100
,
2
) dr(
5
)
=
System.Math.Round(rd.NextDouble
*
100
,
2
) dt.Rows.Add(dr) Next Dim dv As System.Data.DataView
=
New System.Data.DataView(dt) Return dv End Function Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) If Not IsPostBack Then GridView1.DataSource
=
CreateDataSource() GridView1.DataBind() End If End Sub Protected Overloads Overrides Sub Render(ByVal writer As HtmlTextWriter) Dim html As System.IO.StringWriter
=
New System.IO.StringWriter Dim tw As System.Web.UI.HtmlTextWriter
=
New System.Web.UI.HtmlTextWriter(html) MyBase.Render(tw) Dim sw As System.IO.StreamWriter sw
=
New System.IO.StreamWriter(Server.MapPath(
"
a.htm
"
), False, System.Text.Encoding.Default) sw.Write(html.ToString) sw.Close() tw.Close() Response.Write(html.ToString) End sub
</
script
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
>
<
title
>
得到ASP.NET生成的HTML
</
title
>
</
head
>
<
body
>
<
form
id
="Form1"
runat
="server"
>
<
asp:GridView
ID
="GridView1"
runat
="server"
Font-Size
="12px"
BackColor
="#FFFFFF"
GridLines
="Both"
CellPadding
="4"
Width
="560"
>
<
HeaderStyle
BackColor
="#EDEDED"
Height
="26px"
/>
</
asp:GridView
>
</
form
>
</
body
>
</
html