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

本文介绍如何在ASP.NET 2.0中获取页面生成的HTML代码,并将其保存为静态文件。通过覆写Render方法,利用StringWriter和HtmlTextWriter实现整个页面内容的捕获。

在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 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值