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

来源:互联网 发布:the eric python ide 编辑:程序博客网 时间:2024/04/30 03:30

在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生成的HTMLtitle>
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生成的HTMLtitle>
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
原创粉丝点击