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 :

[ASP.NET] Retour page précente - gestion ?


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 110
    Points : 137
    Points
    137
    Par défaut [ASP.NET] Retour page précente - gestion ?
    Bonjour,

    Quelle est votre politique par rapport aux boutons page précente/page suivante dans le navigateur Web ?

    Je m'explique, quand je vais d'une page A vers une page B, j'ai du code qui est exécuté (comme toutes les pages ASP.NET quasiment !), des variables de Session qui sont mises à jour, etc.

    Mais quand je suis sur la page B, si je fais bouton de retour, je reviens sur la page A, mais toutes mes variables et logique n'ont alors plus de sens.

    Comment vous gérer ce genre de problème ?

    Merci pour votre aide.

  2. #2
    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
    Si tu affectes EnableViewState=True à tous tes contrôles, alors tes données vont persister et le retour sur une page ne fera que la rendre à l'identique.

    Seulement, le viewstate, s'il sotcke une masse de données trop importante, ralenti considérablement la rapidité d'éxécution de ton application.

    La solution est donc de n'utiliser cette option que lorsque c'est strictement nécessaire.

    Enfin, je pense que tu fais une petite confusion. Si tu stockes en session, tu ne stockes justement pas dans la page et tes données sont par conséquent toujours existantes.

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 110
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    En fait, je me suis mal exprimé...

    Par exemple, dans la page A, j'ai un bouton VALIDER.
    Si l'utilisateur clique sur ce bouton, cela entraine l'exécution d'une procédure, ensuite il est redirigé vers la page B. (Dans la logique de mon process... comme dans une application Windows.)

    Mais s'il retourne en arrière (avec "page précédente"), il pourra appuyer de nouveau sur VALIDER et entrainer l'exécution de la procédure une nouvelle fois avec les conséquences que cela pourrait avoir sur le bon fonctionnement de l'application.

    En fait, je pensais à un flag enregistré dans une variable de session.

    Si page "TOTO" appelle page A, alors avant le Response.redirect("pageA"), je fais un Session("PageAppellee")="PageA".
    Au Load de la Page A, je teste la variable, si = "PageA", alors, l'appel est légitime et je traite, si en revanche <> "PageA", alors ce n'est pas normal de se trouver sur cette page. Redirection sur page erreur par exemple.

    Dans mon exemple de la page B,
    quand j'arrive sur la page B, ma variable vaut "PageB", donc si je fais un retour page précédente, ma variable vaut toujours "PageB", et au Load de la page A, le programme évalue que cette page n'aurait pas dû être appelée par B.

    Qu'en pensez-vous ?

    ...
    En fait, je me dis que Page précédente/suivante est un reste des sites Web en pur HTML, complétement statiques, où il ne pouvait avoir aucune conséquence à revenir en avant/arrière à tout moment. Non ?

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 110
    Points : 137
    Points
    137
    Par défaut
    Bonsoir,

    Pas de réponse à ce message ?

  5. #5
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    Citation Envoyé par mainecoon Voir le message
    (Dans la logique de mon process... comme dans une application Windows.)
    Et bien je pense que tes difficultees viennent de la.

    Une application web ne doit pas et ne peut pas etre concu comme une desktop application.

    maintenant pour revenir sur ton probleme.

    que fait ton process et quel est le but de ton appli . il y a peut etre a revoir l'architecture de ton appi.

    Donne nous un peu plus de precision sur le quoi et on essaiera de t'aider pour le comment.

  6. #6
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 110
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Je me suis pas mal balladé de sites en sites sur le sujet du bouton précédent... On peut dire que c'est un marronier !

    Mais malheureusement, il semble ne pas y avoir de solution miracle pour gérer le retour à la page précédente.

    Ce que j'ai trouvé et qui me convient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <script language="javascript" type="text/javascript">
    if(window.history.forward(1) != null)
    window.history.forward(1);
    </script>
    Mais cela ne marche que chez moi (sur un IE7), mais pas au boulot, où je teste sur un IE7 aussi. Bizarre !

    Alors j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script language="javascript" type="text/javascript">
    window.history.forward()
    </script>
    Je place ce script entre les balises <HEAD></HEAD>

    Quelques remarques :
    1°/
    Je voulais faire un lien vers une page Javascript unique pour placer le code. Du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script language="Javascript" src="..\js\commun.js" type="text/javascript"></script>
    Mais si je fais ça, ça ne marche pas ! Bizarre aussi...

    2°/ Il est important de placer ce code dans HEAD... Car si on utilise une fonction dans le script avec un appel dans BODY (onload="return myfonction();"... Ca marche aussi MAIS on voit la page précédente s'afficher un court instant avant d'être redirigé sur l'autre page... Cà ne le fait pas sur le premier script.

    3°/ J'ai essayé aussi en utilisant RegisterStartupScript() en VB.NET pour ajouter le scrit dynamiquement dans la procédure de codebehind Page_Load, mais ça me met le script dans la section BODY et non HEAD...

    4°/ J'abandonne l'utilisation de la variable Server HTTP_REFERER. Car j'ai constaté qu'en copiant mon site sur un autre serveur, le HTTP_REFERER n'est plus renseigné à chaque coup... HTTP_REFERER ne devrait pas être utilisé à mon avis... Pas stable du tout ! Faite un Response.Redirect dans le Load d'une page Y après être passé par la page X, sur une page Z. Et bien, la page Z nous donne un HTTP_REFERER = X, car comme le Redirect a été fait dans le Page_Load la page n'a pas été envoyé au Browser, donc il n'a jamais pu remplir le HTTP_REFERER (si j'ai bien compris, c'est le browser qui remplit cette variable).

    5°/ Sinon pourquoi vouloir verrouiller l'effet du bouton précédent (ou ALT + flèche gauche) ? Simplement pour éviter des effets de bord dans le mécanisme de l'application...
    Pour moi ces boutons sont des vestiges des pages HTML 100% où là, il ne pouvait pas y avoir d'impact.

    6°/ Page précédente... mais aussi Actualiser F5... On peut imaginer d'appuyer sur un bouton Enregistrer et si on fait F5, paf, ça rejoue l'enregistrement.
    Comment je gère ça ? Page_Load => variable Session FlagEnreg = False
    Si on utilise Enregistrer => test sur FlagEnreg, si procédure bien exécutée ensuite alors on passe le FlagEnreg = True.
    (Exemple dans le cas où on est sensé appuyer sur ce bouton une seule fois avant d'être redirigé ailleurs...)

Discussions similaires

  1. Lien asp.net dans page asp
    Par premiumbfd dans le forum ASP
    Réponses: 4
    Dernier message: 03/09/2010, 15h42
  2. Réponses: 12
    Dernier message: 19/12/2007, 11h06
  3. [ASP.net] La page Web a expiré
    Par kael79 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/11/2007, 09h12

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