请参阅会话变量,而不是每次都将其转换为类型

时间:2012-07-03 09:56:24

标签: asp.net session-variables

我有一个会话变量,它是一个类实例。我在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;

在我项目的任何地方。

谢谢!

2 个答案:

答案 0 :(得分:3)

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

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

并为

指定值
Label1.Text=Util.Variables.permiss;

答案 1 :(得分: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类添加更多属性即可添加更多会话。