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

转载 2007年09月17日 14:54:00

在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 2.0 HttpHandler实现生成图片验证码(示例代码下载)

学习整理了一下 (一).功能         用HttpHandler实现图片验证码          (二).代码如下    1. 处理程序文件 ValidateImageH...

ASP.NET 2.0/3.5中直接操作Gridview控件插入新记录

ASP.NET 2.0/3.5中直接操作Gridview控件插入新记录发表:admin   阅读:469次  关键字:   字体:[大 中 小] 一、简介 从ASP.NET 2.0起引入了一批新的功能...

ASP.NET 2.0无刷新页面新境界(转载)

     “无刷新页面”,只是一种不确切的效果描述(其实还有其他各种方法来实现这个效果),更确切的说法是:在页面上用JavaScript调用服务器端的一个方法,然后处理返回的数据。实现它最标准的方法当...

asp.net 2.0 缓存(页面输出缓存)

页面输出缓存作为最简单的缓存形式,输出缓存只是在内存中保留为响应请求而发送的 HTML 的副本。其后再有请求时将提供缓存的输出,直到缓存到期,这样,性能有可能得到很大的提高(取决于需要多少开销来创建原...

ASP.NET 2.0中使用sitemapdatasource页面导航控件

原文出处:http://www.ad0.cn/netfetch/article.asp?id=285 sitemapdatasource,sitemapdatasource中还可以绑定到不同的其他页面...
  • rtyytr
  • rtyytr
  • 2011年05月23日 10:45
  • 2348

ASP.NET 2.0中的跨页面提交

简介         在ASP.NET 1.X 版本中,页面都是提交到自己本身,并不能方便的指定需要提交的目的页面。例如FirstPage.aspx中的button只能提交到FirstPage.as...

在ASP.Net 2.0中实现多语言界面的方法及多语言区域代码对应表

在ASP.Net 2.0中实现多语言界面的方法及多语言区域代码对应表
  • zztfj
  • zztfj
  • 2011年04月21日 17:48
  • 1900

Asp.Net 4.0 新特性,输出更纯净的Html代码 ClientIDMode,ViewStateMode等

1. 在Asp.Net 4.0 中我们可以控制输出html中的对象id的形式了,之前我们常常看到类似这样的id ctl00_MainContent_txtAutoID 这在客户端控制时很不方便,...

ASP.NET 2.0页面执行顺序

  • 2007年10月08日 08:44
  • 35KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ASP.NET 2.0中直接得到本页面生成的HTML代码
举报原因:
原因补充:

(最多只允许输入30个字)