2010-07-17 6 views
7

Bitte sagen Sie mir, wie Sie die aktuelle Seite als HTML-Seite auf Knopfdruck speichern. Meine Seite enthält nur Etiketten, die ich beim Laden der Seite einlade.So speichern Sie aktuelle ASPX-Seite als HTML

Ich benutze den Code unten, aber es speichert nicht (in HTML) alle Werte, die ich sehe, wenn meine Seite geladen wird (ich denke, es konvertiert, bevor die Werte auf der Seite geladen werden).

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(); 

} 

Bitte helfen Sie mir!

Antwort

3

Ich bin ein wenig skizzenhaft auf den tatsächlichen Code. Aber vor einer Weile habe ich etwas ähnliches gemacht. Ich benutzte einen StringWriter, um den Inhalt des aspx in HTML-String zu schreiben.

Dann müssen Sie das im Grunde nur in eine Zeichenkette schreiben und als HTML-Erweiterung speichern.

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

können Sie bitte eine Demo oder Dokumentation geben? –

2

Ich weiß, es ist bereits 6 Jahre seit der Frage veröffentlicht wurde. Aber ich habe eine gute Referenz hier: https://weblog.west-wind.com/posts/2004/Jun/08/Capturing-Output-from-ASPNet-Pages

Vielleicht wird es für den anderen Leser nützlich sein.

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) 
} 
Verwandte Themen