2010-04-14 12 views
4

Je me demande quel est le meilleur moyen de transmettre beaucoup de valeurs entre plusieurs pages. Je pensais soit enregistrer les valeurs dans une base de données, en utilisant context.Items [], ou Session []. Je ne suis pas sûr de la meilleure méthode. Je passe probablement environ 40 variables. Ce sera lors d'un processus de paiement, donc ils devraient être persistés tout au long du cycle de vie des utilisateurs. L'utilisateur ne modifie pas les valeurs après leur première saisie. Les valeurs seraient comme adresse de facturation, prénom et nom, etcPasser des données entre les pages asp.net

+1

Eh bien, context.Items ne fonctionnerait pas parce qu'il est jeté entre les demandes. – tloflin

+0

Je pensais que les éléments context.items étaient persistés si vous utilisiez Server.Transfer()? Les valeurs passent-elles d'une page à une autre ou sont-elles persistantes tout au long du cycle de vie d'un utilisateur? L'utilisateur doit-il intercepter et modifier les valeurs? – bryanjonker

+0

Ce sera au cours d'un processus de paiement, donc ils devraient être conservés tout au long du cycle de vie des utilisateurs. L'utilisateur ne modifie pas les valeurs après leur première saisie. Les valeurs seraient comme l'adresse de facturation, le prénom et le nom, etc. – user204588

Répondre

4

La session est probablement la plus efficace. Toutefois, si la session expire ou est perdue pour toute autre raison, les entrées sont perdues. Donc, si la persistance est plus importante, vous voudrez peut-être la stocker dans la base de données.

3

Peut-être Cross-Page Posting option? Une autre option peut être la méthode Server.Transfer avec la propriété Context.Items ou Form.

Dans ce cas, les variables de formulaire et les paramètres de chaîne de requête affichés sont disponibles pour le second/troisième/etc. page aussi.

Mais l'URL dans le navigateur ne sera pas modifiée tant que vous n'avez pas vraiment transféré vers une autre page.

Une chose à prendre en compte est que si la première page a écrit quelque chose dans la mémoire tampon de réponse et vous ne désactivez , alors une sortie de la deuxième page sera ajouté à la sortie le premier. C'est souvent la cause de ce comportement bizarre où il semble qu'une page renvoie deux pages différentes. En outre, puisque le transfert se produit sur le serveur , vous ne pouvez pas transférer une demande vers un site externe.

Plus d'informations peuvent être trouvées here.

+0

Je viens d'éditer la question. Les valeurs doivent passer par plusieurs pages – user204588

1

Le passage des valeurs via les variables de session ne fonctionne pas très bien. Vous pouvez également avoir des chances que l'utilisateur clique sur le bouton de retour ou que les clics se rafraîchissent et que les variables de session aient été récupérées. C'est le moyen pour tous les objets mis en cache. Un moyen de contourner cela est lorsque l'utilisateur va à la deuxième page, vous prenez toutes les variables et les placez dans un champ caché quelque part séparé par une paire Key: Value.

Si les valeurs peuvent mettre mis à l'air libre, pourquoi ne pas simplement les mettre dans l'URL?

Si vous ne pouvez pas faire, puis les mettre dans une base de données et leur donner un ID Guid par le nom d'utilisateur, ce serait la dernière alternative pour moi puisque vous devez à la fois lire et écrire sur la DB demande.

1

La réponse dépend entièrement de ce que l'utilisateur attend la prochaine fois qu'il revient sur votre site. Est-ce qu'il s'attend à ce que vous vous souveniez des informations de contact qu'il a déjà saisies? Si oui, vous devrez utiliser la persistance à long terme dans une base de données, un cookie, etc. Votre utilisateur entre-t-il les informations de quelqu'un d'autre pour cette visite (application de service client) et entrera des informations différentes la prochaine fois ils visitent? Si c'est le cas, vous pouvez utiliser l'objet Session.

+0

Oui, c'est ce que je pensais. Il n'y a vraiment aucune raison de sauvegarder l'information dans une base de données. Les variables sont utilisées pour une demande XML et ils peuvent changer leurs informations de facturation sur la prochaine demande, donc je pense que la session est la voie à suivre – user204588

Questions connexes