Les Variables globales vs ASP.NET l'État de Session
Cela va probablement sembler plutôt naïf, mais je suis de développement d'une application web qui s'étend sur plusieurs pages. L'ensemble de ces pages instancier la même classe de l'objet w/méthodes qui accède à un CMS à l'aide de leur API. Actuellement, lorsqu'un utilisateur démarre la création de contenu, je suis stocker des variables comme l'un ID de dossier où le contenu se trouve dans une variable de Session.
Ma question est: puis-je instancier qu'une seule instance d'une classe qui peut être utilisé sur toutes les pages sans avoir à le faire sur chaque page? Si c'est le cas, chaque personne accédant à la page de leur propre version de la classe? Je suppose qu'en utilisant les variables et méthodes statiques n'est pas la voie à suivre, car ils sont partagés dans la mémoire. Et aussi, où/comment est quelque chose déclarée si elle va être utilisée à l'échelle mondiale, dans une Application Web dans un .net application en C#?
double possible de Cache VS Session VS les cookies?
"Et aussi, où/comment est quelque chose déclarée si elle va être utilisée à l'échelle mondiale, dans une Application Web dans un .net application en C#?" Vous pourriez préciser que la question un peu. Vous pouvez certainement définir des classes dans un montage spécifique, et la référence de cette assemblée lors de la construction de ASP.NET les sites web, les services web, la console apps, etc. TOUTEFOIS, si vous avez besoin d'applications disparates pour partager une INSTANCE spécifique d'une classe, alors vous avez probablement besoin de chercher .NET remoting ou des techniques similaires.
OriginalL'auteur Anthony Levine | 2011-07-20
Vous devez vous connecter pour publier un commentaire.
Je vous recommande de créer une classe qui hérite de System.Page. Ensuite, demandez à votre page de code derrière héritent de cette.
Puis, à l'intérieur de la classe de base, de créer une propriété qui est une référence à l'objet. Comme ceci, par exemple:
Puis, à partir de n'importe où dans n'importe quelle page, il suffit de faire une CurrentFoo. et vous aurez accès à toutes les propriétés.
Ce qui rend agréable et propre code derrière.
Martin - le null vérifier pour la Session["FooSessionObject"] ne pas être à l'intérieur de l'instruction get? get { if(Session["FooSessionObject"]==null) { //création d'une nouvelle Session["FooSessionObject"] = new Foo(); } return retour (Foo)Session["FooSessionObject"];
OriginalL'auteur Bill Martin
Vous devez utiliser
Session
de l'état, si vous voulez stocker des informations qui sont spécifiques à l'utilisateur actuel.Par exemple, dans une page de l'application, vous pouvez stocker la valeur dans la session:
et puis plus tard, sur une autre page de le récupérer à partir de la session:
OriginalL'auteur Darin Dimitrov
Le modèle que vous recherchez est assez facile. Il ya un couple de façons de le faire.
Chacun a ses avantages.
OriginalL'auteur Gregory A Beamer
Mauvaise chose à propos de le faire et de l'aide mondiale au cours des séances de site web est le simple fait que les variables globales peuvent être consultées par tout utilisateur accédant à l', indépendamment de la session. Par exemple, le code ci-dessous.
Après, j'ai créé la classe globale, j'ai ajouté une étiquette à mon défaut et assigné à la variable globale du texte de l'étiquette.
maintenant, vous verrez cela sur chaque formulaire de la page cependant l'inconvénient à cela est toute personne qui accède à votre page sera également en mesure de voir ces données. Si ses données qui doivent être partagées entre plusieurs sessions vous pouvez faire cela. Si les données que tout doit être partagée par l'utilisateur courant sur plusieurs classes dont vous avez besoin pour utiliser des variables de session.
OriginalL'auteur o0knight0o