12
votes

Accéder aux tempdata de httpcontext.current

Comment puis-je accéder à templdata de httpcontext.current?


1 commentaires

Avez-vous trouvé la solution à ce problème?


3 Réponses :


1
votes

Vous ne pouvez pas / ne devrait pas accéder à templdata à partir de httpcontext.current . Vous avez besoin d'une instance de contrôleur. Malheureusement, parce que vous n'avez pas expliqué votre scénario et pourquoi avez-vous besoin de faire cela que je ne peux pas vous fournir une meilleure alternative?


2 commentaires

Je crée une classe qui enveloppe Tempdata up d'une manière conviviale / type de sécurité. Il utilise des tempdata en interne, mais je ne veux pas exposer ce fait. Je ne veux pas avoir à passer des tempdata dans comme 'nouveau mytempdatawrapper (this.tempdata)'. Si Tempdata est juste stocké en session et la session est accessible depuis httpcontext.current pourquoi ne devrais-je pas accéder à Tempdata de httpcontext.current?


Juste une note, elle est mise en œuvre à l'aide de la session par défaut, mais cela ne doit pas être nécessaire, vous pouvez également injecter votre propre implémentation. Dans ce cas, puisque vous comptez sur les détails de la mise en œuvre par défaut, votre hypothèse que les données sont accessibles à partir de httpContext pourraient ne pas être valides.



1
votes

Adresses à votre commentaire à l'autre réponse, vous pouvez implémenter votre propre iParTataProvider, puis remplacer le contrôleur pour l'utiliser. Jetez un coup d'œil à la classe CookieTempDataProvider dans MVC3Futures qui stocke les tempdata dans des cookies plutôt que de la session pour voir comment cela est possible.

http: // volaresystems. com / blog / post / 2011/06/30 / sans session-mvc-sans-perdre-templata.aspx

Plutôt que de changer d'endroit où Tempdata est stockée, votre implémentation pourrait hériter de SessionCookieTempdataProvider et d'ajouter simplement des méthodes de sécurité.


0 commentaires

1
votes

Si vous voulez faire cela sans passer l'objet contexteur sous forme de paramètre en raison de vos propres décisions de conception, vous pouvez au moins utiliser [Threadstatic] sur votre propre classe statique globale. Cela peut être conviennent aux membres accessibles de propriété qui doivent s'appuyer à son tour sur un tel paramètre threadstatique, car ils ne sont pas des fonctions.

Threadstatic peut aider à partager des ressources sur le même thread sur des cadres de pile lointains sans avoir besoin de passer des paramètres. Httpcontext.current utilise ThreadStatic pour y parvenir.

Une classe de contrôleur MVC régulière ne le fera pas pour vous. Vous devrez donc créer votre propre classe pour tous les contrôleurs de votre projet pour hériter de. xxx

utilisation: xxx


0 commentaires