Ich möchte eine Response.Redirect("MyPage.aspx")
aber in einem neuen Browserfenster öffnen lassen. Ich habe das schon einmal gemacht, ohne die JavaScript-Registerskript-Methode zu verwenden. Ich kann mich nur nicht erinnern, wie?
Antworten
Zu viele Anzeigen?Sie können auch den folgenden Code verwenden, um eine neue Seite in einer neuen Registerkarte zu öffnen.
<asp:Button ID="Button1" runat="server" Text="Go"
OnClientClick="window.open('yourPage.aspx');return false;"
onclick="Button3_Click" />
Und rufen Sie einfach Response.Redirect("IhreSeite.aspx"); hinter dem Schaltflächenereignis auf.
Ich benutze immer diesen Code... Verwenden Sie diesen Code
String clientScriptName = "ButtonClickScript";
Type clientScriptType = this.GetType ();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager clientScript = Page.ClientScript;
// Check to see if the client script is already registered.
if (!clientScript.IsClientScriptBlockRegistered (clientScriptType, clientScriptName))
{
StringBuilder sb = new StringBuilder ();
sb.Append ("<script type='text/javascript'>");
sb.Append ("window.open(' " + url + "')"); //URL = where you want to redirect.
sb.Append ("</script>");
clientScript.RegisterClientScriptBlock (clientScriptType, clientScriptName, sb.ToString ());
}
Hier ist eine jQuery-Version basierend auf der Antwort von @takrl und @tom oben. Hinweis: keine hardcodierte formid (oben aspnetForm genannt) und auch keine direkten form.target-Referenzen, die Firefox problematisch finden könnte:
<asp:Button ID="btnSubmit" OnClientClick="openNewWin();" Text="Submit" OnClick="btn_OnClick" runat="server"/>
Dann in Ihrer js-Datei, die auf der GLEICHEN Seite referenziert wird:
function openNewWin () {
$('form').attr('target','_blank');
setTimeout('resetFormTarget()', 500);
}
function resetFormTarget(){
$('form').attr('target','');
}
Ich habe Hyperlink anstelle von LinkButton verwendet und es hat gut funktioniert, es hat die Eigenschaft Target, so dass es mein Problem gelöst. Es gab die Lösung mit Response.Write, aber das hat mein Layout durcheinander gebracht, und die mit ScriptManager hat bei jedem Refresh oder Zurück das Fenster neu geöffnet. So habe ich es also gelöst:
<asp:HyperLink CssClass="hlk11" ID="hlkLink" runat="server" Text='<%# Eval("LinkText") %>' Visible='<%# !(bool)Eval("IsDocument") %>' Target="_blank" NavigateUrl='<%# Eval("WebAddress") %>'></asp:HyperLink>
Können Sie neues fenster öffnen aus asp.net code hinter mit Ajax, wie ich es hier getan habe http://alexandershapovalov.com/open-new-window-from-code-behind-in-aspnet-68/
protected void Page_Load(object sender, EventArgs e)
{
Calendar1.SelectionChanged += CalendarSelectionChanged;
}
private void CalendarSelectionChanged(object sender, EventArgs e)
{
DateTime selectedDate = ((Calendar) sender).SelectedDate;
string url = "HistoryRates.aspx?date="
+ HttpUtility.UrlEncode(selectedDate.ToShortDateString());
ScriptManager.RegisterClientScriptBlock(this, GetType(),
"rates" + selectedDate, "openWindow('" + url + "');", true);
}