简体   繁体   中英

How to open page in new tab using the response. redirect at asp.net

I want to open a new tab or a new page by using Response.Redirect in a button click handler. I'm using a query string to pass some values. How can I open he page in a new tab?

protected void btnSave_Click(object sender, EventArgs e)
{
    ...//some code to insert records
    Response.Redirect("NewQuote.aspx?val=" + this.txtQuotationNo.Text);//displaying gridview in other page to print what needed
}

Try this. This works sure for me...

protected void btnSave_Click(object sender, EventArgs e)
{
    ...//some code to insert records
    Response.Write("<script>window.open ('NewQuote.aspx?val=" + txtQuotationNo.Text+"','_blank');</script>");
}

Simple solution is here.

Edit your html button element and add attribute OnClientClick="target ='_blank';" .

<asp:Button ID="myButton" runat="server" CssClass="btn1"
            OnClick="btnSave_Click" OnClientClick="target ='_blank';" />

Then in btnSave_Click

protected void btnSave_Click(object sender, EventArgs e) { 
    Response.Redirect(url);
}

You can change your design element as below : OnClientClick

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button"  OnClientClick ="document.forms[0].target = '_blank';"  />

Javascript code :

 Response.Write("<script>");
 Response.Write("window.open('NewQuote.aspx' ,'_blank')");
 Response.Write("</script>");

I encountered this same problem today.

Response.write didn't work for me, to solve it I used instead System.Web.UI.ScriptManager.RegisterClientScriptBlock.

This is how your btnSave click event should be:

protected void btnSave_Click(object sender, EventArgs e)
{
    ...//some code to insert records
    System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "openModal", "window.open('NewQuote.aspx?val= "+ this.txtQuotationNo.Text+"' ,'_blank');", true);
}

NOTE: I'm using ScriptManager.RegisterClientScriptBlock because the button is inside an UpdatePanel, if that's not your case you should try:

protected void btnSave_Click(object sender, EventArgs e)
{
    ...//some code to insert records
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "openModal", "window.open('NewQuote.aspx?val= " + this.txtQuotationNo.Text + "' ,'_blank');", true);
}

if you are using http then use below code

Response.Write("<script>window.open ('URL','_blank');</script>");

this code cannot be used for https for https do below

javascript in page

function shwwindow(myurl) {
    window.open(myurl, '_blank');
}

in c# code behind

 string URL = ResolveClientUrl("~") + "**internal page path**";
    ScriptManager.RegisterStartupScript(this, this.GetType(), "show window", 
    "shwwindow('"+URL+"');", true);

this code cannot bybass the browser popup blocker. user must allow it to run. for ie it opens in new window or new tab up to ie version in firefox and chrome it opens new tab

enjoy it!!

A redirect is always in the same page as where you came from, you can't open a new window from a redirect call.

I would suggest to inject some javascript code in the client to open the new page on reload, or change to a control that can open to a new page, like a LinkButton with the right Target attribute.

You can use ScriptManager to do the needed:

private void Redirect_New_Tab(string url_To_Open)
{    
    string modified_URL = "window.open('" + url_To_Open + "', '_blank');";
    ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", modified_URL , true);
}

当我离开目标 ='_blank' 的双引号时为我工作;

Response.write 对我不起作用,所以我改用 System.Web.UI.ScriptManager.RegisterClientScriptBlock。

System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "openModal", "window.open('NewQuote.aspx?val= "+ this.txtQuotationNo.Text+"' ,'_blank');", true);

I spent quite some time on this, and while it does work to set the target on the form to _blank it will mean that every other control on that page will attempt to open in a new window afterwards. And you can't manipulate the form back server side, since the response will never reach the orginal tab.

So I made it work with a combination of setting the target to _blank when the button is clicked, and then shortly after reset the target back.

I put in this Javascript function on the page:

 <script type="text/javascript">
    function openInNewTab() {
        document.forms[0].target = "_blank";
        setTimeout(function () {
            document.forms[0].removeAttribute('target'); // After 500 ms revert back to normal mode so all other controls are not affected.
        }, 500);
    }

And on the control that needs to open in a new tab just add:

OnClientClick="openInNewTab();"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM