2012-01-29 1 views
12

Comment ouvrir une nouvelle fenêtre de navigateur sur un événement de clic de bouton dans C# ASP.NET?Comment ouvrir une nouvelle fenêtre de navigateur sur un événement de clic de bouton?

Veuillez partager un exemple.

Je fais le code suivant. S'il vous plaît laissez-moi savoir où je vais mal.

btn_Click() 
{ 
    if(condition==true) 
    { 
     this.Page.ClientScript.RegisterStartupScript(
      this.GetType(), 
      "page_index_script2", 
      "openNewWindow();", 
      true 
     ); 
    } 
} 

Et la fonction JavaScript est

function openNewWindow() 
{ 
    alert('HI'); 
    window.open('http://www.stackoverflow.com'); 
} 

Quand je lance le code de la fonction javascript Alert fonctionne, mais une nouvelle fenêtre ne reçoit pas ouvert.

+0

Vous voulez la nouvelle fenêtre à ouvrir avant de gérer l'événement sur le code derrière ou juste aller à un lien dans une nouvelle fenêtre? – ivowiblo

+1

Veuillez ne pas ajouter des choses comme "C# ASP.NET" à la fin de vos titres. C'est ce que les tags sont pour. –

Répondre

16

Vous pouvez utiliser un code comme celui-ci, vous pouvez régler une hauteur et la largeur selon vos besoins

protected void button_Click(object sender, EventArgs e) 
    { 
     // open a pop up window at the center of the page. 
     ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", "var Mleft = (screen.width/2)-(760/2);var Mtop = (screen.height/2)-(700/2);window.open('your_page.aspx', null, 'height=700,width=760,status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no,top=\'+Mtop+\', left=\'+Mleft+\'');", true); 
    } 
+0

Comment empêcher l'exécution de ce script contextuel lors de la navigation vers la page? –

+0

@JamesWierzba Ne pouvez-vous pas vérifier l'URL référent ou quelque chose? Je pense que cela devrait fonctionner. – DotNetUser

2

Response.Write ('... javascript qui ouvre une fenêtre ...')

http://www.aspspider.com/qa/Question2714.aspx

+2

Note: un tel code fonctionnera contre les contrôles "popup blocker" dans un navigateur et se traduira normalement par un non-op (pourrait avoir travaillé en 2008 quand il a été répondu). –

+0

Oui, bien sûr, nous devons toujours nous soucier des caractéristiques du navigateur réel lorsqu'il s'agit de fenêtres popup. – Kristian

+0

le lien en réponse est cassé – ihimv

10

Il peut être fait tout sur le côté client en utilisant le OnClientClick[MSDN] événement gestionnaire et window.open[MDN]:

<asp:Button 
    runat="server" 
    OnClientClick="window.open('http://www.stackoverflow.com'); return false;"> 
    Open a new window! 
</asp:Button> 
+0

J'ai essayé tout le mode back end mais c'était le plus facile. Dans Code-Behind, je ferais murer les vérifications nécessaires et construirais l'URL, puis l'accrocherais à OnClientClick de cette façon - btnButton.OnClientClick = "window.open ('" + customURL + "'); return false;" ; Cela fonctionne pour les deux Boutons et LinkButtons (dans mon cas). – SollyM

+0

C'était parfait. –

2

Ou écrire dans le flux de réponse:

Response.Write("<script>"); 
Response.Write("window.open('page.html','_blank')"); 
Response.Write("</script>"); 
Questions connexes