2016-06-20 5 views
0

Da ich ein ganzes HTML-Dokument in einer Zeichenfolge enthalten habe, wie kann ich ein neues Browserfenster starten und dann das HTML in diese Instanz einfügen, damit das neue Fenster das Dokument darstellt?ASP.NET-Webforms: Wie kann ich ein ganzes HTML-Dokument in ein neues Browserfenster schreiben?

Ich habe so viele Beispiele im Internet gefunden, die einfach nicht funktionieren. Ich bin ein Mittelschicht-Typ, also bin ich schwach im Web/Javascript Zeug.

UPDATE: Hier ist ein Code-Snippet, das zeigt, was ich versuche

void Display() 
{ 

    string javascript = string.Empty; 
    javascript += "<script type='text/javascript'>"; 
    javascript += "var win = window.open('', '', '');"; 
    javascript += "win.document.open();"; 
    javascript += "win.document.write('{0}');"; //<------Notice I have a format parameter placed within the call to document.Write 
    javascript += "win.document.close();"; 
    javascript += "win.focus();"; 
    javascript += "</script" + ">"; 

    // this.DisplayableDocumentation is an IEnumerable of strings. Each string contains an entire 
    // HTML document. Ultimately, I want to launch a new window for each document. 
    this.DisplayableDocumentation 
     .ForEach(document => 
     { 
      HttpContext.Current.Response.Write(string.Format(javascript, document)); 

     }); 
} 

Antwort

1
void Display() { 
    var i = 0; 
    var javascript = "<script type='text/javascript'>"; 
    DisplayableDocumentation 
    .ForEach(document => 
      { 
       i++; 
       Response.Write(String.Format("<input id='txt{1}' type='text' value='{0}' style='display:none;'/>", Server.HtmlEncode(document), i)); 
       javascript += String.Format(@" 
var win{1} = window.open('', '', ''); 
win{1}.document.open(); 
win{1}.document.write(document.getElementById('txt{1}').value); 
win{1}.document.close(); 
win{1}.focus(); 
", document, i); 
      }); 
      javascript += "</" + "script>"; 
      RegisterStartupScript("javascript", javascript); 
     } 
+0

Danke für die Antwort. Ich bin jedoch nicht erfolgreich, wenn Sie Ihr Beispiel verwenden. Das Ergebnis ist eine leere Seite. Wenn ich den Seitenquellcode anschaue, sehe ich den Aufruf von document.write zusammen mit dem gesamten HTML-Code, den ich an den Aufruf übergeben habe. Ich aktualisiere meinen ursprünglichen Post mit einem Codebeispiel. –

+0

Gibt es eine Grenze für das, was in document.write() übergeben werden kann? Wenn ich einen kleinen Ausschnitt von HTML übergebe, funktioniert alles gut. Wenn ich ein ganzes HTML-Dokument über eine String-Variable übergebe, funktioniert es überhaupt nicht. –

+0

Danke! Der obige Code hat mich vorangebracht, aber leider scheint Javascript nicht in der Lage zu sein, das HTML zu verarbeiten, das ich an document.write() übergebe. Ich erhalte einen Javascript-Fehler 'Nicht abgeschlossene String-Konstante'. ASP.net's Response.Write hat kein Problem beim Rendern des HTML, also sagt mir das, dass der HTML-Code gut genug ist und daher gerendert werden sollte. Aber andererseits, was weiß ich, ich bin kein Web-Typ. :) –

0

Setzen Sie die Zeichenfolge irgendwo zu tun, so dass Sie es von einer anderen Seite verweisen kann ... oder besser gesagt, ein anderer Handler . Legen Sie dann die Adresse Ihres neuen Fensters fest, um diesen Handler als href zu verwenden.

Verwandte Themen