systemic_anomaly
Messages postés59Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention 1 août 2005
-
11 avril 2005 à 15:12
quineman
Messages postés72Date d'inscriptionjeudi 30 novembre 2000StatutMembreDernière intervention10 novembre 2008
-
17 déc. 2007 à 22:34
Bonjour,
J'aimerais tout simplement exécuter une opération particulière lorsque je quitte une page. Donc récupérer un évènement lorsque je clique sur un autre lien (menu web user control) qui m'envoi vers une autre page ou lorsque je quitte l'application (croix rouge. Possible ?).
J'ai essayé l'évènement Unload et j'ai vérifié qu'il passe bien dedans mais pas qd j'en ai vraiment besoin donc tt à la fin.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 11 avril 2005 à 18:04
l'evenement unload coté serveur, se declenche quand le garbage collector en a envie, donc pas fiable comme truc :D
sinon pour faire une action coté serveur, quand le client part c'est
pas évident, car tu sais pas quand celui ci part vu qu'asp.net
travaille en mode deconnecté. Pour cela il faudra utiliser des petites
astuces.
Deja essayer de recuperer l'event via javascript (www.javascriptfr.com)
ensuite une fois que t'as ca, le plus simple aurait été de faire un
postback, mais si la fenetre ferme tu ne pourras pas, tu peux par
contre peut etre essayer de charger une page genre
quit.aspx?idsession=4520320
ensuite dans quit.aspx tu peux recuperer l'id de la session tu sais que
si cette page est appelé c'est que tu peux faire l'action que t'as
envie.
Je suis pas sur qu'on puisse faire ca via js, mais c'est à essayer.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 12 avril 2005 à 18:44
A mon avis faire un truc comme ca bof :-/ en tout cas moi j'aime pas trop.
une fois que t'es la, j'ai pas le temps de te montrer tout le code,
mais en gros, dans le page_load tu forces la page a mettre la fonction
javascript __dopostback c'est un propriété de l'objet page à mettre à
true, je me rappelle plus du nom.
ensuite dans le script
<script event="onunload" for="window">
_doPostBack('','onUnload')
</script>
aprés dans le page_load de la page
if page.ispostback andalso request.forms("__EVENTARGUMENT") is not nothing andalso request.form("__EVENTARGUMENT") = "onUnload")
UpdateDB
end if
C'est pas une facon joli de faire, mais c'est la plus simple
par contre je suis persuadé que tu pourrais refaire autre chose car la
c'est vraiment bof, imagine que le client change l'url pour aller sur
un autre site, la bd ne sera jamais mis à jour etc.... donc pense à une
autre solution, fin de la session par exemple.
quineman
Messages postés72Date d'inscriptionjeudi 30 novembre 2000StatutMembreDernière intervention10 novembre 2008 17 déc. 2007 à 17:41
Oui avec le fichier global.asax
Par contre j'arrive à detecter clairement le Session_Start mais l'évenement Session_End ne se déclenche à mon avis que quand le navigateur est ouvert... Malheureusement, quand on ferme le navigateur, l'événement ne se déclenche pas (d'ailleurs, c'est surment normal, la session se ferme t elle ? La variable de session est encore sur le serveur ?). Donc re question : y'a t il un moyen de détecter la perte de connection entre un navigateur et un serveur avec un événment dot net ?
quineman
Messages postés72Date d'inscriptionjeudi 30 novembre 2000StatutMembreDernière intervention10 novembre 2008 17 déc. 2007 à 22:34
Oui, je sais nous sommes en déconnecté.
Ma problématique étant que si la personne ne termine pas son achat, et donc ne travail pas jusqu'au bout la Session var. Elle garde en mémoire des informations erronées qui peuvent interférés avec de nouvelles informations...
Une solution pourrait peut être de mettre un UpdatePanel Ajax qui fait une requête toutes les 10 sec au server ? un peu lourdaud mais on peut faire un truc dans le genre
tant que j'ai une requête toute les 10 sec
je travail avec ma session
sinon
je détruis ma variables de session / j'exécute mon code de fin de session
fin tant
Mais en fait il y a beaucoup plus simple :Tester dans le masterPage si l'internaute a finaliser son achat en imputant la valeur true à finAchat et ensuite on test dans le masterPage :<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
If
Not IsNothing(Session("maVar")) And Session("finAchat") = FalseThen
Session.Clear()
EndIf
Cette solution est approprié puisque quand l’internaute ferme son navigateur et reviens, il créer une nouvelle variable…