我在应用程序的 App_Code 文件夹中创建了一个类文件。我有一个 session 变量
Session["loginId"]
我想在我的类中访问这个 session 变量,但是当我写下一行时它给出了错误
Session["loginId"]
谁能告诉我如何访问在 ASP.NET 2.0 (C#) 的 app_code 文件夹中创建的类中的 session 变量
最佳答案
(为完整性而更新)
您可以使用 Session["loginId"]
从任何页面或控件访问 session 变量,并使用 System.Web.HttpContext.Current.Session 从任何类(例如,从类库内部)访问 session 变量["loginId"].
但请继续阅读我的原始答案...
我总是在 ASP.NET session 周围使用包装类来简化对 session 变量的访问:
public class MySession
{
// private constructor
private MySession()
{
Property1 = "default value";
}
// Gets the current session.
public static MySession Current
{
get
{
MySession session =
(MySession)HttpContext.Current.Session["__MySession__"];
if (session == null)
{
session = new MySession();
HttpContext.Current.Session["__MySession__"] = session;
}
return session;
}
}
// **** add your session properties here, e.g like this:
public string Property1 { get; set; }
public DateTime MyDate { get; set; }
public int LoginId { get; set; }
}
此类在 ASP.NET session 中存储其自身的一个实例,并允许您从任何类以类型安全的方式访问您的 session 属性,例如:
int loginId = MySession.Current.LoginId;
string property1 = MySession.Current.Property1;
MySession.Current.Property1 = newValue;
DateTime myDate = MySession.Current.MyDate;
MySession.Current.MyDate = DateTime.Now;
这种方法有几个优点:
- 它使您免于大量类型转换
- 您不必在整个应用程序中使用硬编码 session key (例如 Session["loginId"]
- 您可以通过在 MySession 的属性上添加 XML 文档注释来记录您的 session 项目
- 您可以使用默认值初始化您的 session 变量(例如,确保它们不为空)
关于c# - 如何从 ASP.NET 中的任何类访问 session 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621549/