Ich möchte eine machen Response.Redirect("MyPage.aspx")
, habe sie aber in einem neuen Browserfenster geöffnet. Ich habe dies zuvor ohne Verwendung der JavaScript-Registerskriptmethode getan. Ich kann mich einfach nicht erinnern wie?
quelle
Ich möchte eine machen Response.Redirect("MyPage.aspx")
, habe sie aber in einem neuen Browserfenster geöffnet. Ich habe dies zuvor ohne Verwendung der JavaScript-Registerskriptmethode getan. Ich kann mich einfach nicht erinnern wie?
Ich habe gerade die Antwort gefunden und es funktioniert :)
Sie müssen Ihrem serverseitigen Link / Ihrer serverseitigen Schaltfläche Folgendes hinzufügen:
OnClientClick="aspnetForm.target ='_blank';"
Mein gesamter Schaltflächencode sieht ungefähr so aus:
<asp:LinkButton ID="myButton" runat="server" Text="Click Me!"
OnClick="myButton_Click"
OnClientClick="aspnetForm.target ='_blank';"/>
Auf der Serverseite mache ich OnClick a Response.Redirect("MyPage.aspx");
und die Seite wird in einem neuen Fenster geöffnet.
Der andere Teil, den Sie hinzufügen müssen, besteht darin, das Ziel des Formulars festzulegen. Andernfalls wird jeder Link in einem neuen Fenster geöffnet. Fügen Sie dazu Folgendes in die Kopfzeile Ihres POPUP-Fensters ein.
<script type="text/javascript">
function fixform() {
if (opener.document.getElementById("aspnetForm").target != "_blank") return;
opener.document.getElementById("aspnetForm").target = "";
opener.document.getElementById("aspnetForm").action = opener.location.href;
}
</script>
und
<body onload="fixform()">
OnClientClick="aspnetForm.target ='_blank';"
ichOnClientClick="document.getElementById('Form').target ='_blank';"
Sie können dies als Erweiterungsmethode verwenden
Damit erhalten Sie eine nette Überschreibung des eigentlichen Antwortobjekts
quelle
Da Response.Redirect auf dem Server initiiert wird, können Sie dies nicht verwenden.
Wenn Sie direkt in den Antwort-Stream schreiben können, können Sie Folgendes ausprobieren:
quelle
Konstruieren Sie Ihre URL über den Click Event Handler:
Dann:
quelle
Der Fixform-Trick ist ordentlich, aber:
Möglicherweise haben Sie keinen Zugriff auf den Code, der in das neue Fenster geladen wird.
Selbst wenn Sie dies tun, sind Sie darauf angewiesen, dass es immer fehlerfrei geladen wird.
Und Sie sind darauf angewiesen, dass der Benutzer nicht auf eine andere Schaltfläche klickt, bevor die andere Seite die Möglichkeit erhält, fixform zu laden und auszuführen.
Ich würde stattdessen vorschlagen, dies zu tun:
Richten Sie das Fixform auf derselben Seite wie folgt ein :
quelle
Sie können auf diese Weise auch Code dahinter verwenden
quelle
window.open('page.aspx','_blank');
, wird es in einem neuen Fenster mit deaktivierter Navigationsleiste und fehlenden Navigationsschaltflächen anstelle einer neuen Registerkarte geöffnet.Dies ist mit Response.Redirect nicht möglich, da dies auf der Serverseite geschieht, und kann Ihren Browser nicht anweisen, diese Aktion auszuführen. Was würde im Anfangsfenster übrig bleiben? Eine leere Seite?
quelle
Die Popup-Methode gibt dem Besucher eine sichere Frage.
Hier ist meine einfache Lösung: und überall arbeiten.
quelle
Quelle: http://dotnetchris.wordpress.com/2008/11/04/c-aspnet-responseredirect-open-into-new-window/
quelle
Wenn Sie Ihren Code so umstrukturieren können, dass Sie kein Postback durchführen müssen, können Sie diesen Code im PreRender-Ereignis der Schaltfläche verwenden:
quelle
Sie können auch den folgenden Code verwenden, um eine neue Seite in einer neuen Registerkarte zu öffnen.
Rufen Sie einfach Response.Redirect ("yourPage.aspx") auf. Ereignis hinter dem Knopf.
quelle
Ich benutze immer diesen Code ... Verwenden Sie diesen Code
quelle
Hier ist eine jQuery-Version, die auf der Antwort von @takrl und @tom oben basiert. Hinweis: Keine fest codierte Formid (oben aspnetForm genannt) und verwendet auch keine direkten form.target-Referenzen, die Firefox möglicherweise als problematisch empfindet:
Dann in Ihrer js-Datei, auf die auf der gleichen Seite verwiesen wird:
quelle
Ich habe Hyperlink anstelle von LinkButton verwendet und es hat einwandfrei funktioniert. Es hat die Target-Eigenschaft, sodass mein Problem gelöst wurde. Es gab die Lösung mit Response.Write, aber das hat mein Layout durcheinander gebracht, und die mit ScriptManager öffnete bei jeder Aktualisierung oder Zurück das Fenster erneut. So habe ich es gelöst:
quelle
Möglicherweise möchten Sie das Page.RegisterStartupScript verwenden, um sicherzustellen, dass das Javascript beim Laden der Seite ausgelöst wird.
quelle
Sie können ein neues Fenster aus dem dahinter liegenden asp.net-Code mit Ajax öffnen, wie ich es hier getan habe. http://alexandershapovalov.com/open-new-window-from-code-behind-in-aspnet-68/
quelle
Keines der vorherigen Beispiele hat für mich funktioniert, daher habe ich beschlossen, meine Lösung zu veröffentlichen. In den Schaltflächenklickereignissen ist hier der Code dahinter.
Ich musste den response.redirect-Code eines anderen ändern, um ihn in einem neuen Browser zu öffnen.
quelle
Ich habe diesen Ansatz verwendet. Sie müssen im Popup nichts tun (auf das ich keinen Zugriff hatte, weil ich zu einer PDF-Datei umgeleitet habe). Es werden auch Klassen verwendet.
Fügen Sie zur Verwendung jedem Element die Klasse "new-window" hinzu. Sie müssen dem Body-Tag nichts hinzufügen. Diese Funktion richtet das neue Fenster ein und korrigiert es in derselben Funktion.
quelle
Ich habe dies getan, indem ich target = "_ blank" in den Linkbutton eingefügt habe
dann setzen Sie im Codebehind pageload einfach das href-Attribut:
quelle
HTML
Javascript:
UND Codebehind:
quelle