Response.Radirect для нового окна - PullRequest
116 голосов
/ 19 сентября 2008

Я хочу сделать Response.Redirect("MyPage.aspx"), но открыть его в новом окне браузера. Я делал это раньше, не используя метод сценария регистрации JavaScript. Я просто не помню как?

Ответы [ 20 ]

4 голосов
/ 28 июля 2013

Вы также можете использовать следующий код, чтобы открыть новую страницу в новой вкладке.

<asp:Button ID="Button1" runat="server" Text="Go" 
  OnClientClick="window.open('yourPage.aspx');return false;" 
  onclick="Button3_Click" />

И просто вызовите Response.Redirect ("yourPage.aspx"); событие позади кнопки.

3 голосов
/ 26 августа 2010

Я всегда использую этот код ... Используйте этот код

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 ());
     }
1 голос
/ 12 октября 2012

Я использовал Hyperlink вместо LinkButton, и он работал просто отлично, у него есть свойство Target, поэтому он решил мою проблему. Было решение с Response.Write, но это испортило мой макет, а тот, что со ScriptManager, при каждом обновлении или возврате снова открывал окно. Вот как я это решил:

<asp:HyperLink CssClass="hlk11" ID="hlkLink" runat="server" Text='<%# Eval("LinkText") %>' Visible='<%# !(bool)Eval("IsDocument") %>' Target="_blank" NavigateUrl='<%# Eval("WebAddress") %>'></asp:HyperLink>
1 голос
/ 04 мая 2012

Вот версия jQuery, основанная на ответах @takrl и @tom выше. Примечание: нет жестко закодированного formid (названного aspnetForm выше), а также не использует прямые ссылки на form.target, которые Firefox может найти проблематичными:

<asp:Button ID="btnSubmit" OnClientClick="openNewWin();"  Text="Submit" OnClick="btn_OnClick" runat="server"/>

Затем в вашем js-файле, указанном на той же странице:

function openNewWin () {
    $('form').attr('target','_blank');
    setTimeout('resetFormTarget()', 500);
}

function resetFormTarget(){
    $('form').attr('target','');
}
0 голосов
/ 30 января 2018

HTML

<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" OnClientClick = "SetTarget();" />

Javascript:

function SetTarget() {
 document.forms[0].target = "_blank";}

И код позади:

Response.Redirect(URL); 
0 голосов
/ 05 мая 2015

Я сделал это, поместив target = "_ blank" в кнопку ссылки

<asp:LinkButton ID="btn" runat="server" CausesValidation="false"  Text="Print" Visible="false" target="_blank"  />

затем в загрузке кода за страницей просто установите атрибут href:

btn.Attributes("href") = String.Format(ResolveUrl("~/") + "test/TestForm.aspx?formId={0}", formId)
0 голосов
/ 19 сентября 2008

Вы можете использовать Page.RegisterStartupScript, чтобы обеспечить запуск JavaScript при загрузке страницы.

0 голосов
/ 17 февраля 2014

Я использовал этот подход, он не требует от вас ничего делать во всплывающем окне (к которому у меня не было доступа, потому что я перенаправлял в файл PDF). Он также использует классы.

$(function () {
    //--- setup click event for elements that use a response.redirect in code behind but should open in a new window
    $(".new-window").on("click", function () {

        //--- change the form's target
        $("#aspnetForm").prop("target", "_blank");

        //--- change the target back after the window has opened
        setTimeout(function () {
            $("#aspnetForm").prop("target", "");
        }, 1);
    });
});

Чтобы использовать, добавьте класс "new-window" к любому элементу. Вам не нужно ничего добавлять к тегу body. Эта функция устанавливает новое окно и фиксирует его в той же функции.

0 голосов
/ 08 ноября 2013

Ни один из предыдущих примеров не работал для меня, поэтому я решил опубликовать свое решение. В событиях нажатия кнопки, вот код позади.

Dim URL As String = "http://www.google/?Search=" + txtExample.Text.ToString
URL = Page.ResolveClientUrl(URL)
btnSearch.OnClientClick = "window.open('" + URL + "'); return false;"

Мне пришлось изменить чужой код response.redirect для открытия в новом браузере.

0 голосов
/ 07 октября 2010

вы можете открыть новое окно из кода asp.net за , используя ajax, как я сделал здесь 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);
}
...