Comment puis-je maintenir des objets entre ASP.NET PAGE POST DOSSS? P>
J'ai une page Web ASP.NET.Lorsque je clique sur un bouton ASP.NET, je vais appeler ma fonction (Enregistrer) qui créera un objet de ma classe personnalisée (classeDétails classe) et enregistrera les détails sur db.so Ceci est un post retour.Après que le post retour à nouveau la même page sera affiché à l'utilisateur.At cette heure, je souhaite prendre l'objet utilisateur que j'ai créé dans la première fonction (sauvegarde). Quelle est la meilleure façon de procéder ? Je sais que je peux le stocker dans une session et y accéder. Mais je veux savoir si vous y trouverez une autre meilleure façon? P>
4 Réponses :
Vous pouvez stocker l'objet dans ViewState, ce sera le stockage spécifique à la page. L'objet sera ensuite sérialisé et injecté dans la visualisation de la page, qui rendra la page plus grande. P>
En stockant l'objet dans la session, vous gardez la page plus petite mais consommez des ressources de mémoire serveur. P>
Alternativement, vous pouvez lire l'objet de la base de données à chaque fois. Cela aura l'avantage d'afficher exactement à l'utilisateur ce qui a été enregistré dans la base de données. P>
Une autre option serait de stocker l'objet dans le cache à l'aide d'une touche unique (E.G. "User" + ID) et ne stocke que son identifiant dans la session en cours ou dans la vieilleté. Lors d'un post-plan, vous pouvez ensuite récupérer l'objet du cache. P>
Avec cette approche, vous avez plusieurs avantages: P>
dans UI faire ce in bl p> dans dal p>
L'approche que vous recherchez est une sorte de mécanisme de base de données qui lie les valeurs d'un objet (vous pouvez charger à partir de la base de données si elle existe déjà) sur votre webForm ASP.NET.
essentiellement que vous auriez ce qui suit: p>
page.ispospostback code> et si oui, vous créez un nouvel objet et remplissez-le avec les valeurs entrées par l'utilisateur. LI>
- Dans l'ONCLICK de votre bouton, vous appelez la méthode BL appropriée pour le stocker jusqu'au DB LI>
ol>
Cela ressemblerait (je l'écris hors de ma tête sans compilateur, alors prenez soin de vous :)) p> xxx pré> Ce que je voulais Ajoutez hier, mais j'ai oublié depuis que je devais me dépêcher de:
Vous pouvez aussi bien stocker vos objets dans la vieilletate ou la session, car d'autres décrits, mais j'ai vécu qu'il devrait être fait aussi rare que possible en raison des "inconvénients" suivants (de mon point de vue): p>
- Vos objets doivent être sérialisables li>
- Le stockage de la vieilletate augmentera drammatiquement la taille de votre page et ralentit ainsi le chargement de votre page. Remarque La visualisation est transférée sur le client et reculez chaque fois qu'un «post-plan» se produit. Si c'est la seule possibilité et que vous rencontrez des problèmes de performance, vous pouvez envisager essayer ce (mais cela devrait être l'exception !!) li>
- stocker des objets de votre session peut mettre la charge sur le côté serveur, consommant la mémoire là-bas. Vous devez faire attention à stocker des objets dans votre session et éventuellement vous souciez de la destruction de ces objets si vous savez que vous n'en avez plus besoin. Li>
ul>
L'avantage de l'approche "Databindinging" que j'ai décrite est que vous n'avez pas ces problèmes, avec le "désavantage" d'avoir un nouvel objet frais à chaque fois. Vous devez donc prendre soin de la manipulation de votre état d'objet, c'est-à-dire de garder manuellement les identifiants à travers des arrivées, etc. p> p>