ASP.NET MVC - Comment accéder aux données de Session dans d'autres lieux que le Contrôleur et Vues
Nous pouvons accéder aux données de session dans les contrôleurs et les vues comme ceci:
Session["SessionKey1"]
Comment accédez-vous à la Session de valeurs à partir d'une autre classe que d'un contrôleur ou la vue?
Vous devez vous connecter pour publier un commentaire.
J'aimerais utiliser l'injection de dépendance et de passer à l'instance de la HttpContext (ou juste de la session) à la classe qui a besoin de l'accès à la Session. L'autre alternative consiste à faire référence à HttpContext.Actuel, mais qu'il sera plus difficile à tester car c'est un objet statique.
HttpContext
a une instance du singleton. De façon plus générale de la solution, la réponse est toujours utile.Vous avez juste besoin de l'appeler par le biais de la
HttpContext
comme suit:Voici ma version d'une solution pour ce problème. Notez que j'utilise aussi de l'injection de dépendance ainsi, la seule différence majeure est que la "session" objet est accessible par le biais d'un Singleton
Ici est la SessionDecorator classe, qui utilise un Décorateur modèle pour envelopper la session autour d'une interface :
Espère que cela aide 🙂
Ne l'ai pas fait moi-même, mais cet exemple du Tchad Meyer blog pourrait aider (à partir de ce post: http://www.chadmyers.com/Blog/archive/2007/11/30/asp.net-webforms-and-mvc-in-the-same-project.aspx)
Je voudrais également envelopper toutes les variables de session dans un seul fichier de classe. De cette façon, vous pouvez utiliser intelliSense pour les sélectionner. Cela réduit le nombre de pas dans le code, vous devez spécifier les "cordes" pour la session.