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 :

Response.Redirect dans une fonction dans une classe


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut Response.Redirect dans une fonction dans une classe
    Bon je me suis fait une classe dans laquelle j'ai essayer de mettre ma fonction de déconnexion mais je ne suis pas en mesure d'utiliser :

    Response.Redirect(Request.UrlReferrer.ToString())

    Il me dit qu'il ne connait pas Response ...

    Qu'est-ce que je doit faire ?

  2. #2
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    bonjour,
    Comment ca il ne connais pas Response?
    tu peux nous fournir le nom exacte de l'erreur et l'emplacement de ta ligne de code dans ta page

  3. #3
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Si je comprend bien tu as fait une classe externe qui contient une fonction qui veut faire un Response.Redirect.

    Dans ce contexte, le Reponse ne fonctionne pas, tout simplement parce que ta classe ne fait pas partie de la page.
    Alors deux possiblités :
    - tu mets ta fonction dans le codeBehind de la page, mais vu les paramttre que tu lui envoi, tu dois avoir de cette fonction partout
    - tu fais en sorte de rappeller le contexte

    Pour ce dernier point, mais je suis pas trés calé en cette matière précise, il faut que tu puisse lui renvoyer les paramettre de contexte.
    Soit tu fabrique le paramettre avant d'appeler ta fonction, peut être que ce n'est pas possible en focntion de l'architecture de ton code.
    Soit tu rappelle le contexte et tu l'exploite dans ta classe externe.

    Par exemple, j'ai eu ce genre de souci pour gérer la vérification de la connexion d'un utilisteur avec un fonction de ce type dans tout les pages.
    Dans ma fonciton j'ai mis un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim ohttpcontext As HttpContext = HttpContext.Current
    A partir de là tu recrée le contexte de navigation dans ta fonction. tu peux accéder à plein de truc, comme si tu étais dans la page.

    Pour la suite, faut que tu farfouille dans la MSDN.

    Kenavo

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    sooffy tu es vraiment une bête !

    Merci encore une fois

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Bon ca marche par certain cas et d'autre non .... je reçois l'erreur suivante :

    Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

    Erreur source:

    Ligne 44 : Dim ohttpcontext As HttpContext = HttpContext.Current
    Ligne 45 : ohttpcontext.Response.Redirect(ohttpcontext.Request.UrlReferrer.ToString())
    Ligne 46 : End Function
    Ligne 47 :


  6. #6
    Membre expérimenté
    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 : 55
    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
    Par défaut
    un Z à Zooffy, s'il vous plait.....

    Bon, je crois que j'ai oublié un truc, comme quoi, je suis pas une bête tant que ça.

    Il ne faut aps oublié que le contexte peut être vide dans certains cas, donc il faut le tester d'abords.

    Par exemple, dans ma petit fonction de vérification de connection je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim ohttpcontext As HttpContext = HttpContext.Current
    If ohttpcontext.Profile.UserName = "" Then
    	ohttpcontext.Response.Redirect("~/Login/login.aspx?mess=" & Message & "&page=" & PageRetour)
    End If
    Je test d'abords l'existence du Username dans le contexte, Parce que si le gars est authetifié il à pas besoins d'être redirigé.

    Dans ton gars il faut que tu test l'existence d'un Referer. Si le gars à tapper l'URL directe, ben il a pas de referer, donc tu ne peut pas le renvoyer à "nulle part".

    Moi, j'essaierais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim ohttpcontext As HttpContext = HttpContext.Current
    If ohttpcontext.Request.UrlReferrer.ToString() = "" Then
         ohttpcontext.Response.Redirect("un truc que tu veux")
    else
         ohttpcontext.Response.Redirect(ohttpcontext.Request.UrlReferrer.ToString())
    End If
    Avec ce genre de chose, tu devrais pouvoir t'en sortir.
    Peut être même qu'on peut tester autre chose sur UrlReferer qui remonterais un True ou un False.

    Kenavo

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Désolé pour le Z.

    Mais c'est good avec ce que tu viens de me donner tout semble fonctionner à merveille.

    Juste une dernière petite question par rapport à ça ...

    <td align='right'><asp:Button id="btnDeconnexion" onclick="deconnexion" runat="server" text="Déconnexion"></asp:Button></td>

    Est-ce possible d'appeller la fonction de me classe du genre maclasse.mafonction() au lieu de deconnexion qui est un Sub locale à se fichier sur mon onclick ?

  8. #8
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Moi, j'aime pas trop tripoter les On Quelqchose.
    donc, sur un <asp:button tu as un évènement Click dans ton CodeBehind

    Je pense que si tu utlise ça en appelant ta fonction de ta classe externe tu devrais avoir un résultat satifaisant.

    Kenavo

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Bon le problème est que .... dans le fond je me suis fait un template pour le haut de ma page et je l'insère avec un <!--#include file="modeleHaut.aspx" --> dans mes pages pour ne pas devoir le recréer à toutes les fois.

    Le bouton dont j'ai parlé précédemment est dans ce template.

    Puisque j'insère ce template de ma page je ne peux pas avoir de codebehind car ca me fait une erreur qui me dit que je peut pas mettre :

    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="modeleHaut.aspx.vb" Inherits="Projet.modeleHaut"%>

    puisqu'il est déja déclarer dans le haut de ma page.

    Justement ça me cause un autre problème dans le moment vu que je suis très limité du à ça.

    Suggestions SVP !

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 206
    Par défaut
    Je suis pas sur d'avoir tout compris a ton problème, mais pourquoi tu n'utilises pas de masterpage ?
    tu n'as pas besoin d'inclure des pages, et comme ca tu continues a utiliser
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="modeleHaut.aspx.vb" Inherits="Projet.modeleHaut"%>

    tu vois ce que je veux dire ?

    sur ce kenavo

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Je voudrais bien mais je dois utiliser le Framework 1.XXX et non pas le 2.0 et suppsoément que les masterpage ça ne fonctionne pas.

    Alors j'attends toujours vos solutions mes pro.

  12. #12
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Je dois bien avouer qu'avec un Include dans la page, j'ai un peu de mal à suivre le parcours.

    Bon, je vais voir si une diée lumineuse me vient, mais je crois bien être au bout de mes connaissances.

    Par contre, comme quoi réfléchir en écrivant, ça peut servir.

    A la palce de l'Include, tu pourrais pas mettre une ASCX ?
    ça te solutionnerais pas mal de souci, à mon avis.

    Kenavo

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    C'est quoi exactement un ascx ?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Par défaut
    Bon j'ai fait ma petite recherche et je suins entrain d'essayer ça et ça semble vraiment faire ce que je voulais ...

    Je sais que je te l'ai déjà dit Zooffy mais .... you're the !

    Merci énormément encore une fois.

  15. #15
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Ouais, c'est sûr que c'est bien les ASCX. Dés que tu maitrise le truc, tu va voir les possibilités qui s'offre à toi.

    Pour info, parce que j'ai appris ça dernièrment, tu peux aussi mettre des Property dans ton Controle Utilisateur (ça c'est le nom complet) et les implémnter lorsque tu déclare le Controle dans la page, voir même travailler avec pour faire des retour de valeur et nourrir des fonctions dans ta page.

    Bref, ça vaut bien un bon veil Include, mais en mieux.

    Le revers de la médaille c'est que ça devient vite galère quand tu veux aller chercher des info dans le composant de la apge à partir du Controle ou l'inverse.

    Il y aun topic qui traine en ce moment avec un gars qui jsutemetn à des souci pour afficher un controle dans une page suite à une condition.

    Kenavo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. récupérer une variable d'une fonction dans une classe
    Par free_dom dans le forum Général Python
    Réponses: 20
    Dernier message: 08/07/2009, 12h35
  2. Réponses: 8
    Dernier message: 10/01/2007, 21h10
  3. passer une fonction dans un parametre d'une propriété de classe
    Par CAML dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 06/08/2006, 19h52
  4. Réponses: 5
    Dernier message: 09/07/2006, 18h14
  5. [VB6] Appel d'une fonction dans un module d'une dll
    Par speedster dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/06/2006, 17h37

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