Passage de variable de session à partir de la page à page
Je me demande quel est mon problème sur la façon de passer une variable d'une page à l'aide de asp.net session.
J'ai dépouillé le code sur une seule zone de texte pour voir ce qui se passe. Je suis juste en train de prendre la valeur d'une zone de texte et de l'afficher sur une page de confirmation. Lorsque le bouton est cliqué, cela transferts de moi à la deuxième page, mais il y a de l'étiquette est vide. Oui mon post url pointe vers la deuxième page.
Voici le bouton cliquez sur:
protected void submit_Click(object sender, EventArgs e)
{
string name = txtFirstName.Text.Trim();
Session["name"] = name;
}
Voici la page de chargement de la deuxième page:
protected void Page_Load(object sender, EventArgs e)
{
lblName.Text = (string)(Session["name"]);
}
À moins que j'ai été à la recherche à de cette à long et à côté de quelque chose. J'ai déjà lu "Comment faire pour Lire des Valeurs de l'État de Session" à partir de MSDN.
- Avez-vous réglé "enableSessionState" pour de vrai dans la directive de Page?
- Que faire si vous essayez d'appeler .ToString() à la place de la coulée de la Session["nom"] ?
- J'ai essayé le .ToString et a été d'obtenir la référence d'Objet n'est pas définie à une instance d'un objet d'erreur tellement ému de cette méthode.
- La raison vous avez la référence de l'objet est parce que ta variable de Session n'a jamais vraiment été ensemble, et était donc nulle. Voir ma réponse. 🙂
- Semble comme un endroit où vous devez simplement être en train de passer d'une chaîne de requête, plutôt que d'utiliser de la session. En principe, il faudrait s'efforcer d'être apatride, chaque fois que possible, lors de l'utilisation d'une application web.
- enableSessionState je l'ai fait aussi, et toujours, juste une page blanche.
- Servy, vous avez un point. Mais si vous voulez que l'utilisateur de ne pas afficher/modifier les données après la présentation, puis une chaîne de Requête ne fonctionne pas. Troy, essayer le code que j'ai posté et voir si cela fonctionne.
- Vous pouvez afficher les données, plutôt que d'utiliser un paramètre get, ou vous pouvez faire côté serveur le transfert à l'autre de la page plutôt que d'un transfert. De toute façon, les données n'est pas logiquement dynamique, donc, en utilisant l'état persistant pour elle n'est pas vraiment bon.
- Ouais, vous avez un point là. Ne peux pas dire que je suis en désaccord.
Vous devez vous connecter pour publier un commentaire.
Vous dire que vous avez défini la PostBackUrl à votre deuxième page. Si vous allez faire de cette façon, vous devez utiliser la Page.PreviousPage pour accéder à votre zone de texte. Mais c'est la façon la plus simple:
Tout d'abord, laissez la PostBackUrl seul. Réglage de la PostBackUrl à votre deuxième page signifie que vous dites à la DEUXIÈME PAGE pour gérer votre clic de bouton, pas de la première page. Par conséquent, votre variable de session n'est jamais définie, et est nulle lorsque vous essayez de l'enlever.
Cela devrait fonctionner pour toi.
Et oui, vous pouvez aussi le faire avec une QueryString, mais si ses quelque chose que vous ne voulez pas que l'utilisateur de voir/modifier, puis une variable de Session, c'est mieux.
Puis dans la deuxième page (Vous n'avez pas VRAIMENT besoin de la ToString()):
MODIFIER -- assurez-vous que votre bouton est tiré. Quelqu'un peut me corriger le mal, sur ce, que je fais la plupart de mon travail dans VB.NET, pas du C#. Mais si vous ne spécifiez pas le OnClick de la valeur, votre fonction ne sera pas appelée.
Le code que vous avez posté l'air bien, alors votre problème est probablement avec le programme d'installation.
Vérifier ce lien ASP.NET l'État de Session vue d'ensemble et accorder une attention particulière aux sections sur la Cookieless id de session et la Configuration de l'État de Session.
Je ne pense pas que vous avez ajouté la session. C'est de cette façon que j'ai fait le mien.
Première Page
Deuxième Page
Donc avec le vôtre, je pense que vous avez besoin..
Je pense que ce que vous avez dans la deuxième page doit fonctionner, mais si ce n'est pas le cas, ajouter ToString (), comme par exemple..
Laissez-moi savoir si cela aide!
Tu fais une redirection après la définition de la variable de session sur la première page, si donc vous, il ne fonctionnera pas correctement (sauf si vous savez le truc). La caisse cet article, c'est de travailler. Fondamentalement, la façon de faire ce travail est à la surcharge de la méthode de redirection.
Le paramètre false empêche .net de terminer le traitement sur la page existante (qui écrit en fait l'état de session)
Pour La Deuxième Page
Vous pouvez utiliser
Server.Transfer()
au lieu deResponse.Redirect()
Pour la première page, utilisez ceci: