gpt4 book ai didi

c# - 如何从 ASP.NET 中的任何类访问 session 变量?

转载 作者:IT王子 更新时间:2023-10-29 03:31:26 26 4
gpt4 key购买 nike

我在应用程序的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com