Asp.net-保持对会话对象的更改
本文关键字:对象 会话 net- Asp | 更新日期: 2023-09-27 17:59:38
我正在使用会话来保存自定义对象UserSession,我访问会话如下:
UserSession TheSession = HttpContext.Current.Session["UserSession"] as UserSession;
然后,在我的代码中,我修改了TheSession的一个属性,比如这个
TheSession.Prop1 = some new value;
我的问题是:当我更改值时,它是更改HttpContext.Current.session["UserSession"]中会话内的值,还是只更改TheSession变量,在这种情况下,我需要将对象变量重新分配给会话。
谢谢。
标准会话提供程序是一个将对象存储在内存中的简单字典。
您正在修改会话中放置的同一对象,因此修改将持续存在
(除非您使用的是一个邪恶的可变结构)
是的,它是同一个对象。在以下示例中很容易看到:
Session["YourObject"] = yourObject;
yourObject.SomeProperty = "Test";
var objectFromSession = (YourObjectType)(Session["YourObject"]);
Response.Write(objectFromSession.SomeProperty);
Write
将显示:Test
创建一个具有静态属性的静态类:
public static class UserSession
{
public static int UserID
{
get { return Convert.ToInt32(Session["userID"]); }
set { Session["userID"] = value; }
}
}
当你使用它时:
UserSession.UserID = 23;
Response.Write(UserSession.UserID);
它将使用会话变量来存储传递给该属性的信息。
它不需要重新分配对象。因为它们都指向内存中的同一个实例