2010-09-06 3 views
1

J'utilise habituellement la mise en œuvre STATIC lors du développement d'application Desktop et je viens de recevoir ma tête cogné sur le mur quand je l'utilise dans ASP.NET STATIC (pas une bonne idée)ASP.NET Passage de valeurs entre les classes en utilisant l'interface

I pense que j'ai vu quelques commentaires ici avant que vous pouvez utiliser INTERFACE pour passer des valeurs entre les classes et les pages sans utiliser la session. Pouvez-vous donner un bon exemple sur la façon de mettre en œuvre ma question? Merci

voici mon exemple de code

 
public interface ISessionManager 
{ 
    SessionStates sesState { get; set; } 
} 

public struct SessionStates 
{ 
    public string SessionID; 
    public bool isLoggedIn; 
    public string Username; 
} 
+3

Je ne vois pas comment cela est possible. Une interface est juste une définition d'un contrat. Pour passer des informations d'une classe (que je suppose être code-behind ou quelque chose sur le serveur) à une page (qui est basée sur le client) implique: a) cookie, b) viewstate, c) valeur cachée ou autre valeur de formulaire, d) appel ajax, ou e) quelques autres qui m'échappent. Une interface est une définition, pas un mécanisme. –

+0

Merci D. Très bien, question rapide. Est-il possible d'ajouter les valeurs STRUCT dans Session en tant que valeur? par exemple - SessionStates ss = new SessionStates(); ss.Username = "testing"; Session.Add ("MySession", ss); mais je ne suis pas sûr de savoir comment le récupérer. – jaysonragasa

+0

Désolé: SessionStates ss = (SessionStates) Session ["MySession"]; – jaysonragasa

Répondre

0

objets d'état Utilisation session,

session [ « nom_variable »] = attribuer une valeur dans une classe et utiliser cette session objet d'état dans une autre classe.

Par exemple,

utilisant System.Web.SessionState;

// Stocker la valeur dans l'objet d'état de session dans une classe

session [ "sessionid"] = Request.QueryString.Get ("session_key") ToString().

// Utilisez l'objet d'état de session dans une autre classe

Chaîne sessionid = Session [ "sessionid"] ToString().

0

De toute façon, j'ai décidé de le faire d'une autre manière et je l'ai appelé SessionManager. Je veux juste sortir de taper le nom de la variable de session chaque fois que je dois l'employer et ceci est pour empêcher une faute de frappe le nom de variable de session .. ainsi ceci que je suis venu.

 
using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Web; 
using System.Web.SessionState; 

public class SessionManager : IRequiresSessionState 
{ 
    public SessionManager() 
    { 
    } 

    string _sessionID = string.Empty; 
    public string SessionID 
    { 
     get 
     { 
      if (Get("SessionID") == null) Save("SessionID", string.Empty); 
      return Get("SessionID").ToString(); 
     } 
     set 
     { 
      this._sessionID = value; 
      Save("SessionID", value); 
     } 
    } 

    bool _isLoggedIn = false; 
    public bool isLoggedIn 
    { 
     get 
     { 
      if (Get("isLoggedIn") == null) Save("isLoggedIn", false); 
      return Convert.ToBoolean(Get("isLoggedIn").ToString()); 
     } 
     set 
     { 
      this._isLoggedIn = value; 
      Save("isLoggedIn", value); 
     } 
    } 

    string _username = string.Empty; 
    public string Username 
    { 
     get 
     { 
      if (Get("Username") == null) Save("Username", string.Empty); 
      return Get("Username").ToString(); 
     } 
     set 
     { 
      this._username = value; 
      Save("Username", value); 
     } 
    } 

    int _selectedCID = 0; 
    public int SelectedCID 
    { 
     get 
     { 
      if (Get("SelectedCID") == null) Save("SelectedCID", 0); 
      return Convert.ToInt32(Get("SelectedCID")); 
     } 
     set 
     { 
      this._selectedCID = value; 
      Save("SelectedCID", value); 
     } 
    } 

    string _selectedCIDValPath = string.Empty; 
    public string SelectedCIDValPath 
    { 
     get 
     { 
      if (Get("SelectedCIDValPath") == null) Save("SelectedCIDValPath", 0); 
      return Get("SelectedCIDValPath").ToString(); 
     } 
     set 
     { 
      this._selectedCIDValPath = value; 
      Save("SelectedCIDValPath", value); 
     } 
    } 

    #region methods 
    void Save(string name, object value) 
    { 
     if (HttpContext.Current.Session[name] != null) 
     { 
      HttpContext.Current.Session[name] = value; 
     } 
     else 
     { 
      HttpContext.Current.Session.Add(name, value); 
     } 
    } 
    object Get(string name) 
    { 
     return HttpContext.Current.Session[name]; 
    } 
    #endregion 
} 
Questions connexes