大家都知道,.aspx页面最后被生成html发送到客户端,在由浏览器解析。我现在想在服务端获取要输出的html,不知道大家做过没有,请大家帮帮忙。

解决方案 »

  1.   

    可是使用WebRequest来获得。具体参看MSDN
      

  2.   


                StringBuilder sb = new StringBuilder();
                TextWriter tw = new StringWriter(sb);
                Server.Execute("WebForm1.aspx", tw);
                tw.Flush();            string HtmlText= sb.ToString();  //
      

  3.   

     public  string GetHtmlSource(string Url, string charset)
            {
                if (charset == "" || charset == null) charset = "gb2312";
                string text1 = "";
                try
                {
                    HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(Url);
                    HttpWebResponse response1 = (HttpWebResponse)request1.GetResponse();
                    Stream stream1 = response1.GetResponseStream();
                    StreamReader reader1 = new StreamReader(stream1, Encoding.GetEncoding(charset));
                    text1 = reader1.ReadToEnd();
                    stream1.Close();
                    response1.Close();
                }
                catch (Exception exception1)
                {
                }
                return text1;
            }
      

  4.   

    直接调用上面方法,传入你的URl和charset就行
      

  5.   

    下面代码测试通过.Html 代码<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HtmlCode.aspx.cs" Inherits="HtmlCode" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Label ID="lblTest" runat="server" Text ="测试"></asp:Label>
            <table style="width:100%;">
                <tr>
                    <td>
                        A</td>
                    <td>
                        B</td>
                    <td>
                        C</td>
                </tr>
                <tr>
                    <td>
                        D</td>
                    <td>
                        E</td>
                    <td>
                        F</td>
                </tr>
                <tr>
                    <td>
                        G</td>
                    <td>
                        H</td>
                    <td>
                        I</td>
                </tr>
            </table>
        
        </div>
        <asp:TextBox ID="txtHtmlcode" runat="server" Rows="12" TextMode="MultiLine" 
            Width="500px"></asp:TextBox>
        </form>
    </body>
    </html>[code=C#]
    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;public partial class HtmlCode : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 刷新下页面查看Html code
            if (Session["Htmlcode"] != null)
            {
                txtHtmlcode.Text = Session["Htmlcode"].ToString();
            }    }    protected override void Render(HtmlTextWriter writer)
        {
            //base.Render(writer);        System.IO.MemoryStream mem = new System.IO.MemoryStream();
            System.IO.StreamWriter twr = new System.IO.StreamWriter(mem);
            System.Web.UI.HtmlTextWriter myWriter = new HtmlTextWriter(twr);
            base.Render(myWriter);        myWriter.Flush();
            myWriter.Dispose();        System.IO.StreamReader strmRdr = new System.IO.StreamReader(mem);
            strmRdr.BaseStream.Position = 0;
            string pageContent = strmRdr.ReadToEnd();
            strmRdr.Dispose();
            mem.Dispose();
            // 这里设置下断点,查看pageContent的值
            Session["Htmlcode"] = pageContent;    
            writer.Write(pageContent);    }
    }
    [/code]
      

  6.   


    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;public partial class HtmlCode : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 刷新下页面查看Html code
            if (Session["Htmlcode"] != null)
            {
                txtHtmlcode.Text = Session["Htmlcode"].ToString();
            }    }    protected override void Render(HtmlTextWriter writer)
        {
            //base.Render(writer);        System.IO.MemoryStream mem = new System.IO.MemoryStream();
            System.IO.StreamWriter twr = new System.IO.StreamWriter(mem);
            System.Web.UI.HtmlTextWriter myWriter = new HtmlTextWriter(twr);
            base.Render(myWriter);        myWriter.Flush();
            myWriter.Dispose();        System.IO.StreamReader strmRdr = new System.IO.StreamReader(mem);
            strmRdr.BaseStream.Position = 0;
            string pageContent = strmRdr.ReadToEnd();
            strmRdr.Dispose();
            mem.Dispose();
            // 这里设置下断点,查看pageContent的值
            Session["Htmlcode"] = pageContent;    
            writer.Write(pageContent);    }
    }