HERO

求是,求实,求新,求精

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

在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() * 1002);
      dr[
3= System.Math.Round(rd.NextDouble() * 1002);
      dr[
4= System.Math.Round(rd.NextDouble() * 1002);
      dr[
5= System.Math.Round(rd.NextDouble() * 1002);
      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 * 1002)
      dr(
3= System.Math.Round(rd.NextDouble * 1002)
      dr(
4= System.Math.Round(rd.NextDouble * 1002)
      dr(
5= System.Math.Round(rd.NextDouble * 1002)
      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 


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1332065

 
阅读更多
个人分类: ASP.NET
想对作者说点什么? 我来说一句

.NET 2.0直接得到页面HTML代码

zgqtxwd zgqtxwd

2008-05-01 04:15:00

阅读数:106

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭