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

在ASP.NET 2.0中,有时候需要对ASP.NET生成的HTML代码进行处理,或者是保存成静态文件。ASP.NET 提供了直接将请求保存成文件的方法:HttpRequest.SaveAs方法。下面这个方法就是在ASP.NET 2.0中得到ASP.NET生成的HTML代码,同时,生成一个静态文件的方法。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="right.aspx.cs" Inherits="right" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div style="height:1000px; width:100%;">
    
<asp:GridView ID="GridView1" runat="server" Font-Size="12px" BackColor="#FFFFFF"
      GridLines
="Both" CellPadding="4" Width="560">
      
<HeaderStyle BackColor="#EDEDED" Height="26px" />
    
</asp:GridView>

    
</div>
    
    
</form>
</body>
</html>

// 计算数据,完全可以从数据看取得
    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());
    }
  

posted on 2007-11-29 10:03  执法长老  阅读(264)  评论(1编辑  收藏  举报

导航