2012-09-16 4 views
1

Je stocke ma classe User dans la propriété Context.Items de HttpRequest pour une utilisation sur toute la page.Contexte.Items vs variable locale?

Je dois faire référence à ceci plusieurs fois, peut-être 10 fois de fois si j'utilise un répéteur.

La récupération à partir de context.items est-elle coûteuse? Par exemple devrais-je aller le chercher et le stocker en tant que variable locale, ou y accède plusieurs fois directement ok?

Répondre

1

Si vous pouvez utiliser une variable locale, utilisez une variable locale. Non seulement cela réduit les frais généraux, mais cela rend également votre code plus court et plus facile à lire et à maintenir (pas de "chaînes magiques").

Context.Items est conçu pour les situations où vous ne pouvez pas utiliser une variable locale:

Obtient une collection clé/valeur qui peut être utilisé pour organiser et partager des données entre une interface IHttpModule et une interface IHttpHandler au cours d'une Requête HTTP.

Ainsi, vous pouvez utiliser Context.Items pour transférer des informations entre deux objets qui gèrent la même demande mais qui n'ont pas accès au même objet Page. Exemples concrets:

  • Transmission de données entre deux pages avec Server.Transfer. Les données de passage entre Application_BeginRequest et la page.
  • Passage de données entre un IHttpModule personnalisé (par exemple, un gestionnaire d'authentification personnalisé) et la page.
+0

c'est comment je l'utilise. Il est créé via global.asax, puis réutilisé dans la page maître et la page – dotnetnoob