2010-12-22 5 views
3

Je souhaite déclarer une variable comme ci-dessous pour l'utiliser sur plusieurs pages de mon site. Je suppose plutôt que de le déclarer une fois par page, je peux le faire globalement? Je l'ai essayé dans une classe (dossier app_code) et dans la page global.asax mais mon code n'arrive pas à le trouver. Je vais peut-être aller tout à fait faux cependant? Code comme ci-dessous ...Variable globale sur le site Web asp.net

Dim myUser As MembershipUser = Membership.GetUser() 

Donc, en l'état, mes pages ne peuvent pas trouver la variable 'myUser'. Toute aide très appréciée! Merci

Répondre

2

Créer une classe/struct et ajouter une statique

namespace MyApp 
{ 
    public class Variables 
    { 
     public static User MembershipUser 
     { 
      get { return Membership.GetUser(); } 
     } 
    } 
} 

Ensuite, vous pouvez accéder à la valeur/propriété à l'aide:

MyApp.Variables.MembershipUser

Si cette GetUser() retourne une objet utilisateur avec une propriété "Nom d'utilisateur" vous pouvez:

Hello <%=MyApp.Variables.MembershipUser.Username%> 

Voici un ver VB.NET sion:

Namespace MyApp 
    Public Class Variables 
     Public Shared ReadOnly Property MembershipUser() As User 
      Get 
       Return Membership.GetUser() 
      End Get 
     End Property 
    End Class 
End Namespace 
+0

Ok j'ai mis ce qui suit dans un fichier de classe: Variables publiques Classe myuser Public Partagé en tant que MembershipUser = Membership.GetUser() End Class et a appelé à l'aide Variables.myUser –

+1

Vous ne voulez pas statique (partagé) variables spécifiques à l'utilisateur! Une variable statique a la même valeur pour * tous * les utilisateurs du site! Une propriété statique renvoyant une valeur spécifique à l'utilisateur est correcte. –

+0

Désolé je pense que je suis mal compris votre commentaire. Vous avez dit que je ne veux pas de variables spécifiques à l'utilisateur statique, mais que je veux des valeurs statiques spécifiques à l'utilisateur? –

3

Utilisez les objets Session ou Application, si vous avez besoin d'un tel "global".

Utilisez Session si nécessaire par utilisateur, Application si pour toute l'application.

+0

Si c'est l'utilisateur actuel, je suppose que c'est une variable de session alors. Si je mets cette ligne dans mon fichier global.asax, cela ne fonctionne pas. Où devrais-je le mettre? –

+0

@adrian g - Quelle ligne? L'avez-vous changé pour utiliser des sessions? Je vous suggère de lire le document lié pour voir comment 'Session' et' Application' devraient être utilisés. – Oded

0

Cela pourrait aller dans une classe de base de page ou dans une méthode d'extension pour System.Web.UI.Page

public static MembershipUser GetMembershipUser(this System.Web.UI.Page page) 
{ 
    return Membership.GetUser(); 
} 
0

@ stian.net Je donne les résultats suivants - fonctionne exactement comme je veux. Diriez-vous que c'était la bonne façon de le faire?

Public Class Variables 
Public Shared ReadOnly Property myUser As MembershipUser 
    Get 
     Return Membership.GetUser() 
    End Get 
End Property 
End Class 
+0

oui, cela semble bon :) –

+0

Merci pour votre aide! –