web-dev-qa-db-fra.com

comment ouvrir une page dans un nouvel onglet sur un clic de bouton dans asp.net?

Je veux ouvrir une page dans un nouvel onglet du navigateur sur un clic de bouton.

J'ai beaucoup cherché sur google mais je n'ai rien trouvé.

Voici mon bouton.

   <asp:Button ID="btnNewEntry" runat="Server" CssClass="button" Text="New Entry" OnClick="btnNewEntry_Click" />

    protected void btnNewEntry_Click(object sender, EventArgs e)
    {      
        Response.Redirect("New.aspx");
    }

Pouvez-vous s'il vous plaît m'aider comment je peux faire ça?

20
Rajbir Singh

Vous pouvez utiliser window.open. Comme ça:

protected void btnNewEntry_Click(object sender, EventArgs e)
{ 
   Page.ClientScript.RegisterStartupScript(
   this.GetType(),"OpenWindow","window.open('YourURL','_newtab');",true);
}
29
Arion

Pourquoi ne pas simplement appeler window.open directement depuis OnClick?

<asp:Button ID="btnNewEntry" runat="Server" CssClass="button" Text="New Entry" OnClick="window.open('New.aspx')" />
6
James Cahours

Prenez soin de reset target , sinon tous les autres appels comme Response.Redirect s'ouvriront dans un nouvel onglet, ce qui pourrait ne pas être ce que vous voulez. 

<asp:LinkButton OnClientClick="openInNewTab();" .../>

En javaScript:

<script type="text/javascript">
    function openInNewTab() {
        window.document.forms[0].target = '_blank'; 
        setTimeout(function () { window.document.forms[0].target = ''; }, 0);
    }
</script>
4
Nina

Utilisez JavaScript pour l'événement de formulaire/bouton principal. Un exemple est: 

Context.Response.Write("<script language='javascript'>window.open('AccountsStmt.aspx?showledger=" & sledgerGrp & "','_newtab');</script>")
4
Pankaj

essayez ceci plutôt que de rediriger ...

Response.Write("<script>");
Response.Write("window.open('ClickPicture.aspx','_blank')");
Response.Write("</script>");
3
Pranay Rana

Essaye ça

<a href="#" target="_blank">Link</a>
2

Je viens d'avoir le même problème. Le côté client n'était pas approprié car le bouton publiait des informations à partir d'une liste.

Vu la même solution que Amaranth sur way2coding mais cela ne fonctionna pas pour moi.

Cependant, dans les commentaires, quelqu'un a posté une solution similaire qui fonctionne

OnClientClick="document.getElementById('form1').target ='_blank';"

où form1 est l'id de votre formulaire asp.net. 

2
andyb

Vous devez utiliser Javascript car le code derrière n'est que côté serveur. Je suis à peu près sûr que ça marche.

<asp:Button ID="btnNewEntry" runat="Server" CssClass="button" Text="New Entry" OnClick="btnNewEntry_Click" OnClientClick="aspnetForm.target ='_blank';"/>

protected void btnNewEntry_Click(object sender, EventArgs e)
{
  Response.Redirect("New.aspx");
}
1
Amaranth
Add this Script  
<script type = "text/javascript">
 function SetTarget() {
     document.forms[0].target = "_blank";
 }
</script>
and 
<asp:Button ID="BTNpRINT"  runat="server" Text="PRINT"  CssClass="btn btn-primary"  OnClick="BTNpRINT_Click" OnClientClick = "SetTarget();"/>    
and 
protected void BTNpRINT_Click(object sender, EventArgs e)
    {
        Response.Redirect(string.Format("~/Print.aspx?ID={0}",txtInv.Text));
    }
0
Lalit Agnihotri