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;

在我项目的任何地方。

谢谢!

4

2 回答 2

3

您可以创建自己的helper类型/方法。

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

并将值分配给

Label1.Text=Util.Variables.permiss;
于 2012-07-03T10:01:07.247 回答
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类添加更多属性即可添加更多会话。

于 2012-07-03T10:04:26.053 回答