在ASP。NET中如何取得页页执行生成的HTML代码

解决方案 »

  1.   

    看这个是不是你要的 
    string url = "your url";
            System.Net.WebClient wc = new System.Net.WebClient();
            Stream resStream = wc.OpenRead(url);
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
            sb.Append(sr.ReadToEnd());
            Response.Write(sb.ToString());
      

  2.   

    我是取本页面的HTML,这样会产生循环,再说页面没有别要多次执行
      

  3.   

    //取得输入的URL地址
    PageUrl = UrlText.Text;
    WebClient wc = new WebClient();
    //把已登录的用户或正被模拟的用户的用户凭据赋给用于对向Internet资源的请求进行身份验证的网络凭据
    wc.Credentials = CredentialCache.DefaultCredentials; ///方法一:
    ///从指定的URI下载数据
    Byte[] pageData = wc.DownloadData(PageUrl);
    //把下载到的字符型数组数据转换成字符串类型
    ContentHtml.Text = Encoding.Default.GetString(pageData); /// 方法二
    //为指定的URI打开一个可读的数据流,并定义一个该流的引用
    /// Stream resStream = wc.OpenRead(PageUrl);
    /// 根据上面定义的数据流,以默认编码的方式定义一个读数据流
    /// StreamReader sr = new StreamReader(resStream,System.Text.Encoding.Default);
    /// 读取数据流中的内容
    /// ContentHtml.Text = sr.ReadToEnd();
    /// //关闭数据流
    /// resStream.Close();
    /// 
    //释放资源
    wc.Dispose();
      

  4.   

    PageUrl = UrlText.Text;
    //根据指定的UR建立WEB请求
    WebRequest  request = WebRequest.Create(PageUrl);
    //定义对上面WEB请求的反应
    WebResponse response = request.GetResponse();
    //取得WEB响应的数据流
    Stream resStream = response.GetResponseStream();
    //根据上面定义的数据流,以默认编码的方式定义一个读数据流
    StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
    // 读取数据流中的内容
    ContentHtml.Text = sr.ReadToEnd();
    //关闭数据流
    resStream.Close();
    //关闭读数据流并释放资源
    sr.Close();
      

  5.   

    http://www.google.com/search?hl=zh-CN&newwindow=1&rls=GGLD%2CGGLD%3A2006-35%2CGGLD%3Azh-CN&q=%22stringbuilder%22+%22htmltextwriter%22+%22render%22&btnG=%E6%90%9C%E7%B4%A2&lr=lang_zh-CN%7Clang_zh-TW
      

  6.   

    using System;
    using System.IO;
    using System.Net;
    using System.Text;namespace WinApp
    {
    class Program
    {
    static void Main()
    {
    // Create a request for the URL. 
    WebRequest request = WebRequest.Create("http://www.contoso.com/default.html");
    // If required by the server, set the credentials.
    request.Credentials = CredentialCache.DefaultCredentials;
    // Get the response.
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    // Display the status.
    Console.WriteLine(response.StatusDescription);
    // Get the stream containing content returned by the server.
    Stream dataStream = response.GetResponseStream();
    // Open the stream using a StreamReader for easy access.
    StreamReader reader = new StreamReader(dataStream);
    // Read the content.
    string responseFromServer = reader.ReadToEnd();
    // Display the content.
    Console.WriteLine(responseFromServer);
    // Cleanup the streams and the response.
    reader.Close();
    dataStream.Close();
    response.Close();
    }
    }
    }
      

  7.   

    http://community.csdn.net/expert/Topicview2.asp?id=5078015
      

  8.   

    以上都是重发请求,以生成页面,这样不是我要的结果,如果我的参数的POST提交的,那么我还要构造HTTP头来让URL再次生成原来的请求生成的HTML,这样太复杂,因为我是在页面本身代码里,我的目标是要要UNONLOAD事件里,取得当前页面生成的HTML,而不是重新请求一次,有没人有更好的办法
      

  9.   

    不重新发送请求的方法http://blog.csdn.net/net_lover/archive/2006/10/12/1332065.aspx
    http://dotnet.aspx.cc/article/36E249F6-967A-444B-9433-14DE939D1116/read.aspx
      

  10.   

    孟子那个代码:
    Response.Write("test");得不到test
      

  11.   

    我的想法是能不能在PreSendRequestContext事件里,直接得到内存中的HTML代码
      

  12.   

    这有点难度,对asp.net的生成还不是很精通
      

  13.   

    直接从Response.Output取,这是一个TextWriter类型的对象,尝试从它那里直接把HTML代码弄出来吧。肯定有方法的,用Reflector打开.NET Framework慢慢看吧,你只要掌握了Page呈现背后的执行方式,也就知道哪里能够把HTML弄出来了。
      

  14.   

    可以使用页面缓存或数据缓存,
    如果生成html也是先动态生成,生成后直接访问;但是如果页面内容有变化,则要重新动态生成。
      

  15.   

    jf
      
    *****************************************************************************
    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html