2010-07-17 112 views
7

請告訴我如何將當前頁面保存爲按鈕單擊時的html頁面。我的頁面只包含我在頁面加載事件中填寫的標籤。我在下面的代碼中使用了這個代碼,但它並沒有保存(在HTML中)當我的頁面被加載(我認爲它在頁面上加載值之前轉換)時看到的所有值。如何將當前的aspx頁面保存爲html

private void saveCurrentAspxToHTML() 
{ 
    string HTMLfile = "http://localhost:4997/MEA5/AEPRINT.aspx?id=" + 
         Convert.ToString(frmae.AeEventid) + 
         "&eid=" + 
         Convert.ToString(frmae.AeEnquiryid); 

    WebRequest myRequest = WebRequest.Create(HTMLfile); 

    // Return the response. 
    WebResponse myResponse = myRequest.GetResponse(); 

    // Obtain a 'Stream' object associated with the response object. 
    Stream ReceiveStream = myResponse.GetResponseStream(); 
    Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 

    // Pipe the stream to a higher level stream reader with the required encoding format. 
    StreamReader readStream = new StreamReader(ReceiveStream, encode); 

    // Read 256 charcters at a time. 
    Char[] read = new Char[256]; 
    int count = readStream.Read(read, 0, 256); 

    using (StreamWriter sw = new StreamWriter(Server.MapPath("~") + "\\MyPage.htm")) 
    { 
     while (count > 0) 
     { 
      // Dump the 256 characters on a string and display the string onto the console. 
      String str = new String(read, 0, count); 
      sw.Write(str); 
      count = readStream.Read(read, 0, 256); 
     } 
    } 

    // Close the response to free resources. 
    myResponse.Close(); 

} 

請幫幫我!

回答

3

我在實際的代碼上略顯粗略。但前一段時間我做了類似的事情。我使用StringWriter將aspx的內容寫入html字符串。

StringWriter sw = new StringWriter(); 
    HtmlTextWriter w = new HtmlTextWriter(sw); 
    divForm.RenderControl(w); 
    string s = sw.GetStringBuilder().ToString(); 

然後,基本上你只需要將它寫入字符串文件並將其另存爲HTML擴展名即可。

System.IO.File.WriteAllText(@"C:\yoursite.htm", s); 
+0

請問您可以給一些演示或文檔? – 2016-01-01 10:04:50

2

我知道這個問題發佈已經有6年了。但是,我在這裏得到了很好的參考:https://weblog.west-wind.com/posts/2004/Jun/08/Capturing-Output-from-ASPNet-Pages

也許這對其他讀者有用。

protected override void Render(HtmlTextWriter writer) 
{ 
     // *** Write the HTML into this string builder 
     StringBuilder sb = new StringBuilder(); 
     StringWriter sw = new StringWriter(sb); 

     HtmlTextWriter hWriter = new HtmlTextWriter(sw); 
     base.Render(hWriter); 

     // *** store to a string 
     string PageResult = sb.ToString(); //PageResult contains the HTML 

     // *** Write it back to the server 
     writer.Write(PageResult) 
}