Ajout/suppression d'une des variables de session sur la Page OnInit/OnLoad en C#
Je suis à l'aide de C#.
Je vais avoir des ci-dessous de code en C#:
protected override void OnInit(EventArgs e)
{
try
{
if (Session["boolSignOn"].ToString() == "true".ToString())
{
lblPanelOpen.Text = Session["panelOpen"].ToString();
}
else
{
lblPanelOpen.Text = Session["panelOpen"].ToString();
}
}
catch (Exception ex)
{
Logger.Error("Error processing request:" + ex.Message);
}
}
protected override void OnLoad(EventArgs e)
{
try
{
if (!string.IsNullOrEmpty(Session["panelOpen"].ToString()))
{
lblPanelOpen.Text = string.Empty;
Session.Remove("panelOpen");
}
}
catch (Exception ex)
{
Logger.Error("Unable to remove the session variable:" + ex.Message);
}
}
Dans le code ci-dessus, je vais avoir un Session["panelOpen"]
variable qui est créé à partir d'un autre contrôle de l'utilisateur et une fois que ma page est en train d'essayer de rendre, je suis le stockage Session["panelOpen"]
dans mon cachés lblPanelOpen.Text
sur la page OnInit()
méthode, cependant, quand la page est chargée complètement, puis je suis en train de supprimer la variable de session.
S'il vous plaît suggérer!
- Vous pouvez utiliser PageLoadComplete événement pour que.
- Quel problème rencontrez-vous?
- Quelle est la question?
- Fondamentalement, ce que je suis en train de faire, c'est que, sur ma page d'accueil il y a curseur de panneaux qui se ouvre lorsque l'utilisateur clique sur l'un d'eux, et si le panneau est ouvert et que l'utilisateur clique sur le lien de connexion pour obtenir la connexion, après la fonctionnalité de connexion est effectuée, l'utilisateur est redirigé vers sa page, ici, je suis en train d'essayer d'ouvrir le même panneau qui a été cliqué par l'utilisateur avant de passe pour la connexion. Ci-dessus dans onit fonctionnait bien, mais le seul problème est qu'il jusqu'à ce que la variable de session est là, il va ouvrir le même panneau de commande si l'utilisateur revient sur la page d'accueil. S'il vous plaît suggérer
- pouvez vous s'il vous plaît exp[lain ce que tu veux dire par "mais le seul problème est qu'il jusqu'à ce que la variable de session est là, il va ouvrir le même panneau de commande si l'utilisateur revient sur la page d'accueil". Dites-vous que même si l'utilisateur n'est pas enregistré dans le même panneau s'ouvre pour chaque utilisateur... s'il vous plaît expliquer!!
- Non, Regardez la Session["panelOpen"] variable contiendra l'ID du panneau qui est cliqué par l'utilisateur, disons exemple j'ai 5 panel sur ma page d'accueil et de l'utilisateur clique sur 2 panneau et l'ouvre et entre les deux il clique sur le lien de connexion pour obtenir les identifiants de connexion de l'application, alors il est redirigé vers la page de login avec les valeurs de panneau est ouvert dans notre cas, il est de 2, maintenant sur la page de login, je suis en train de la Session["panelOpen"] avec la valeur 2, puis à partir de la page de login de l'utilisateur est redirigé vers la page d'accueil, maintenant, ici, je vérifie pour la session vairable et selon que je suis en ouvrant le même panneau qu'il a cliqué avant la connexion.
- vraiment il pas encore clair pour moi, je comprends ce que vous essayez de faire, vous avez un panneau sur votre page d'accueil et lors de la demande de l'utilisateur pour se connecter quand il a redirigé vers la page d'accueil une fois le processus de connexion que vous souhaitez conserver l'état du groupe tel qu'il était avant la connexion. Mais il est clair pour moi comment vous faites cela maintenant et quel est votre problème?
- La question ici n'a la session de l'utilisateur anonyme toujours le même pour l'utilisateur quand il se connecter? Je n'ai pas de réponse à cette question peut-être que je devrais le poster :), mais je pense que ce n'est pas la même et donc vous ne pouvez pas utiliser la session d'acquiescer à votre demande. Êtes-vous d'obtenir la référence d'Objet n'est pas définie à une instance d'un objet ?
- Avec la poursuite des commentaires ci-dessus - je suis le panneau d'ouvrir sans aucun problème, mais le problème est que si l'utilisateur clique sur une autre page à partir de la page d'accueil et revient à la page d'accueil du même panneau s'ouvre, que selon le code de toujours vérifier la Session["panelOpen"] valeur dans notre cas, il est de 2 de sorte que la deuxième panneau sera de nouveau ouvert. Je veux juste ouvrir une fois après qu'il se comporte comme d'habitude.
Vous devez vous connecter pour publier un commentaire.
OK je pense que je l'obtiens. Dans votre première méthode OnInit vous êtes la seule vérification pour
boolSignOn
être null ou vide, mais pas pour lepanelOpen
.essayer cette intead:
Également modifier votre d'autre part.
et de modifier l'ensemble de votre code:
Mise à jour voici le code complet que j'ai essayé
}
J'espère que cela peut fonctionner. Essayer
lblPanelOpen.Text = Session["panelOpen"].ToString();
) de la partie en elle.Ok on y va,
Lorsque l'utilisateur presse le lien de connexion ou bouton vous de stocker une valeur dans une variable de session dans votre cas
Le login de l'utilisateur et la page redirigé vers la page d'accueil du chargement de la page vous cochez la Session["boolSignOn"] si elle a de la valeur et c'est vrai, alors vous appliquez le panneau de changements dont vous avez besoin.
Dans votre page d'accueil Page_Unload si la Session["boolSignOn"] a de la valeur et il est vrai qu'on ressort à la fois de la Session["boolSignOn"] et de la Session["openPanel"],
J'espère que c'est ce que vous cherchez.
Session["boolSignOn"] as bool? ?? false
Désolé, je ne suis pas en mesure de comprendre votre problème correctement cependant, je peux voir un bleu d'impression de votre problème et voici quelques étapes que vous pouvez suivre pour voir si cela résout votre problème.
1) Lorsque l'utilisateur ouvre un panneau (en supposant qu'il devrait être un événement de clic lorsque l'utilisateur clique pour ouvrir le panneau). Il faut donc ajouter le code dans l'événement click de créer et d'enregistrer une variable de session avec l'ID du Panneau est ouvert.
2) en Supposant que l'utilisateur a terminé le processus d'ouverture de session lorsque vous rediriger l'utilisateur vers la même page, vous devriez être en mesure d'accéder à la variable de session et aussi le supprimer dans l'événement OnLoad.
3) Si cela ne fonctionne pas, essayez d'utiliser de Serveur.Transfert de rediriger l'utilisateur vers la même page.
4) Aussi avez-vous essayé de faire de Session.Clear(); cela fonctionne?