2012-07-03 51 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类中即可添加更多会话。

相关问题