IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

un Response.Redirect en Target Blank


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut un Response.Redirect en Target Blank
    Bonjour à tous.

    J'ai un souci, certainement par méconnaissance du langage.

    Je dois afficher une image clickable sur mon site qui doit rediriger vers un autre site. Mais je voudrais que ce click s'ouvre dans une nouvelle fenêtre (ou onglet).

    Je suis passé par un ImageBouton car je dois également enregistrer des info dans la BDD lors du click.

    Donc je fais un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Protected Sub ibConcours_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ibConcours.Click
            Dim ib As ImageButton = sender
            Dim z As String = New DManager("DataDev").RetournerScalaire("EXEC ANTRE_EnregistrementTracking " & ib.CommandArgument & ",'" & Request.ServerVariables("REMOTE_ADDR") & "'")
            Response.Redirect(ProjetY.specAntre.RetournLienImage(lienpub, specAntre.retourPub.lien))
        End Sub
    Sauf que là, le Redirect n'ouvre pas de nouvelle fenêtre.
    Connaissez vous un truc qui me permette de faire ce que je veux ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Salut,

    Enlève ton response.redirect, et mets à la place un appel avascript pour ouvrir une nouvelle page, avec un code js du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.open('http://manouvellepage.com');
    tu trouveras sur le net un tas d'exemple pour ouvrir soit une nouvelle page soit un nouvel onglet. Dans tous les cas ce n'est pas possible coté serveur.

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide mais cela ne correspond pas du tout à mon besoin.

    Le window.open est du JScipt pur et dur et donc n'est pas appelable à partir du CodeBehind de manière directe.

    Il est impératif que l'action se passe dans la CodeBehind, comme j'ai expliqué, je dois enregistrer des choses au moment du click.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    Salut,

    Vu que tu fais un postBack, le mieux sera d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page.RegisterStartupScript("",tonscript);
    Ceci te permet d’exécuter dynamiquement du code javascript.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    StringBuilder redirect = new StringBuilder();
    redirect .Append("<script>");
    redirect .Append("window.open('http://manouvellepage.com');");
    redirect .Append("</script>");
    Page.RegisterStartupScript("Redirection",redirect.toString());
    a+

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Salut,

    C'est excactement ce que je voulais dire: le window open doit s'ouvrir au rechargement de la page, après ton ton postback.

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Sinon, si ce besoin est récurrent, tu peux aussi passer par une méthode d'extension de la classe HttpResponse.
    C'est la solution pour laquelle j'ai opté

    Un exemple (en anglais, sorry) ici

  7. #7
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Citation Envoyé par calagan99 Voir le message
    Un exemple (en anglais, sorry) ici
    Ouaip, en anglais et t'es désolé, ben voyons ! et en C#, t'es désolé encore plus ? !!!

    hihihihihihihi

    Merci Calagan99, je vais étudier ton lien à tête reposée. J'avoue aller au plus court, l'idée de Ramajb, cautionnée par mermich est plus simple à mettre en place.

    Donc merci à tous les trois pour ce coup de main.

    Mais (parce qu'il y a toujours un mais !!!) j'ai un souci avec la dernière commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page.RegisterStartupScript("Redirection",redirect.toString());
    Mon Visual Studio, gentil qu'il est me dit un truc simple :
    Avertissement 3 'Public Overridable Sub RegisterStartupScript(key As String, script As String)' est obsolète*: 'The recommended alternative is ClientScript.RegisterStartupScript(Type type, string key, string script). http://go.microsoft.com/fwlink/?linkid=14202'. C:\inetpub\wwwroot\Module\AntreJeu\DetailConcours.ascx.vb 45 9 http://localhost/
    Donc, moi, discipliné, mais pas bête, je fais comme il dit et je transforme en ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page.ClientScript.RegisterStartupScript("Redirection", redirect.ToString())
    Sauf que là, il veut un truc en plus : un type. Alors moi je lui ai dit : "Pauvre type !" mais il a pas apprécié la blague !

    Le souci que j'ai là c'est qu'il demande un type en premier argument et je trouve pas ce qu'il veut.

    Avez vous une idée ?

    Question subisdiaire, mais j'ai comme l'impression que je vais pas aimer la réponse que je pense connaitre déjà : en cliquant sur le truc, ça ouvre une fenêtre qui est considérée comme une fenêtre publicitaire. La sécurité étant ce qu'elle sur les navigateurs, IE comme FF, ça ouvre pas direct.
    Je suppose qu'il n'y a aucun moyen de contourner ça ?

    Bon, à ces deux détails près, qui ne sont pas bloquant, ça marche super bien. Merci pour m'avoir découvrir un nouveau truc, merci pour votre coup de main.

    @ bientôt, j'espère.

    PS : au fait Calagan99, toujours en Sud Manche ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  8. #8
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Zooffy : je ne parle presque plus VB, et je suis bilingue.Ce qui explique que je t'ai donné ce lien

    Plus sérieusement, pour ton histoire de type, essaye : Me.GetType().

    Pour le reste, la solution du registerStartupScript a le mérite d'être rapide.
    L'extension de la méthode Redirect de la classe HttpResponse n'a effectivement d'intérêt que si tu comptes réutiliser cette méthode plusieurs fois dans ton code.

    Pour ma part, elle m'a aussi permet de mettre le pied dans les méthodes d'extension dont je me sert aujourd'hui quotidiennement

  9. #9
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    this.GetType()

  10. #10
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour le GetType, ça marche bien.
    Mais bon, le this c'est pas bon, puisque je suis en VB, pour ceux qui suivent pas .... hi hi hi
    Le Me, non, raté, ça marche avec Page. Mais bon, j'ai oublié de dire que j'étais dans un ASCX aussi....

    Me reste plus qu'à voir le "souci" des fenêtres publicitaires et tout ira bien.

    Calagan : je garde précieusement ton lien. Je sens que je vais m'y coller.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

Discussions similaires

  1. Redirection Target Blank
    Par speedclic dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 24/01/2012, 09h04
  2. [ASP3] response.redirect + target
    Par beegees dans le forum ASP
    Réponses: 9
    Dernier message: 02/10/2008, 14h56
  3. probleme avec Response.Redirect
    Par nicerico dans le forum ASP
    Réponses: 2
    Dernier message: 06/08/2004, 16h21
  4. problème de response.redirect
    Par boucher_emilie dans le forum ASP
    Réponses: 5
    Dernier message: 06/07/2004, 10h10
  5. Réponses: 3
    Dernier message: 17/06/2004, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo