儲存ASPX 生成的html程式碼

iDotNetSpace發表於2009-03-04

在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">
// 計算資料,完全可以從資料看取得
違規廣告ection 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>

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 違規廣告ection
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


</html>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-561378/,如需轉載,請註明出處,否則將追究法律責任。

相關文章