在ASP.NET 2.0中直接得到本页面生成的HTML代码

时间:2006/11/29 23:04:14      阅读:2753          
在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] = "【踢西工作室】" + 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) = "【踢西工作室】" + 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>
评论
  • Re:在ASP.NET 2.0中直接得到本页面生成的HTML代码  (2007/1/8 13:28:13) by allen 
    强大啊
  • Re:在ASP.NET 2.0中直接得到本页面生成的HTML代码  (2007/1/9 12:06:15) by 王子琪 
    good!支持!
  • Re:在ASP.NET 2.0中直接得到本页面生成的HTML代码  (2007/1/25 10:30:25) by 张小琦 
    这个网站不错啊!
  • Re:在ASP.NET 2.0中直接得到本页面生成的HTML代码  (2007/1/27 12:07:20) by 郑杰 
    真好要用到,有很大的帮助
  • Re:在ASP.NET 2.0中直接得到本页面生成的HTML代码  (2007/5/11 10:29:58) by hy007 
    好东西
  • Re:在ASP.NET 2.0中直接得到本页面生成的HTML代码  (2007/8/11 11:52:22) by caixiebin 
标 题:
 
姓 名:
 
主 页:

验证码:

评论:
 

Because of the cache,you may see your comments several minutes later.