2012-07-03 54 views
1

我有一個會話變量,它是一個類實例。我宣佈它在Global.asax參考會話變量而不必每次都將其轉換爲類型

void Session_Start(object sender, EventArgs e) 
{ 
    // Code that runs when a new session is started 
    Session["SiteVariables"] = new SiteVariables(); 

} 

現在我需要參考一些該變量的成員在我的解決方案的幾個地方,但是,據我瞭解,我必須這樣做,這樣說:

SiteVariables objSiteVariables = (SiteVariables)Session["SiteVariables"]; 
Label1.Text = objSiteVariables.permiss; 

我想知道是否有方法,例如建立地方靜態變量或東西,這讓我只是做:

Label1.Text = objSiteVariables.permiss; 

在我的項目的任何地方。

謝謝!

回答

3

您可以創建自己的helper類型/方法。

public class Util 
{ 
    public static SiteVariables Variables 
    { 
     get 
     { 
      return HttpContext.Current.Session["SiteVariables"] as SiteVariables; 
     } 
    } 
} 

,並指定值來

Label1.Text=Util.Variables.permiss; 
0

您可以創建會話的包裝,這將允許類型安全的訪問是這樣的:

public class SessionHandler 
{ 
    public static SessionHandler CurrentSession 
    { 
     get 
     { 
      SessionHandler session = 
       (SessionHandler)HttpContext.Current.Session["SessionId"]; 
      if (session == null) 
      { 
       session = new SessionHandler(); 
       HttpContext.Current.Session["SessionId"] = session; 
      } 
      return session; 
     } 
    } 

    public SiteVariables SiteVariables { get; set; } 
} 

您可以使用它像這樣:

// assign 
SessionHandler.CurrentSession.SiteVariables = new SiteVariables(); 

// retrieve 
SiteVariables objSiteVariables = SessionHandler.CurrentSession.SiteVariables; 

這樣只需將更多屬性添加到SessionHandler類中即可添加更多會話。

相關問題