123 Stimmen

Response.Redirect to new window

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?

4voto

Zohaib Punkte 109

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.

3voto

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

1voto

Ben Barreth Punkte 1535

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','');
}

1voto

bokkie Punkte 1309

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>

0voto

Yaplex Punkte 2222

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X