J'ai une page d'index qui renvoie les utilisateurs vers une page de modification des produits dans des onglets de navigateur distincts.
Pour chaque produit édité, l'index réécrit la Session["ProductID"].
La page d'édition comporte ensuite le code suivant afin de disposer d'un identifiant unique pour cet onglet et ce produit :
if (!IsPostBack) //first time page load
{
Random R = new Random(DateTime.Now.Millisecond + DateTime.Now.Second * 1000 + DateTime.Now.Minute * 60000 + DateTime.Now.Minute * 3600000);
PageID.Value = R.Next().ToString();
Session[PageID.Value + "ProductID"] = Session["ProductID"];
}
Cela fonctionne, et lorsque le même utilisateur ouvre plusieurs onglets, je ne fais référence qu'à la Session[PageID.Value + "ProductID"] dans mon code afin d'avoir toujours le bon ID. (Je travaille dans un environnement de confiance, c'est pour un intranet, donc je ne suis pas trop gêné par le niveau de sécurité).
Le problème se produit si l'utilisateur rafraîchit la page en appuyant sur la touche F5. À ce moment-là, la Session[PageID.Value + "ProductID"] reçoit la Session["ProductID"] du dernier produit qu'il a ouvert.
Par exemple :
L'utilisateur 1 ouvre le produit 1 dans l'onglet 1
L'utilisateur 1 ouvre le produit 2 dans l'onglet 2
Lorsqu'ils utilisent l'outil normalement, tout fonctionne bien. Cependant, si :
L'utilisateur 1 sur la page du produit 1 appuie sur le bouton de rafraîchissement (F5), la page du produit 1 devient la page du produit 2.
Existe-t-il un moyen de détecter un rafraîchissement de page à partir d'un "premier chargement/redirection à partir d'une autre page" afin de pouvoir dire à ma page de ne pas mettre à jour ma Session[PageID.Value + "ProductID"] ?