我有一个会话变量,它是一个类实例。我在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;
在我项目的任何地方。
谢谢!
答案 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
类添加更多属性即可添加更多会话。