我有一个asp.net应用程序,用户在登录页面登录。我创建一个Employee对象,并将loginID存储在该页面的button_click事件中。在整个asp.net应用程序中保持一个员工对象活着
如何让Employee对象在应用程序中保持活动状态(不必每次都将Employee对象作为参数传递)?
我有一个asp.net应用程序,用户在登录页面登录。我创建一个Employee对象,并将loginID存储在该页面的button_click事件中。在整个asp.net应用程序中保持一个员工对象活着
如何让Employee对象在应用程序中保持活动状态(不必每次都将Employee对象作为参数传递)?
这往往是Session State用于存储会话范围的项目。
将会员对象存储在会话之外可能意味着该对象所涉及的用户实际上已不再使用您的站点,因此使得将该对象保留在内存中可能毫无意义。
如果你真的想要整个应用程序,那么Application State可能值得一看。
你可能想看看使用Session data。
这是一种简单的方法来获取与给定会话关联和持久化的对象,但存在一些警告(它可能会影响性能,具体取决于数据存储的内容,您持续存在的对象的大小/复杂程度如何以及您正在处理的并发用户数量)。
鉴于类是:
[Serializable]
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
保存到会话:
protected void DoLogin()
{
Employee employee = new Employee()
{
Id = 1,
FirstName = "John",
LastName = "Smith"
};
// save it to session
Session.Add("Employee", employee);
}
从会议上得到它。注意它需要被转换为“员工”:
protected Employee GetEmployee()
{
if (Session["Employee"] != null)
{
// needs to be cast
return (Employee)Session["Employee"];
}
else
{
return null;
}
}
我通常将这些东西包装到一个属性中,以方便使用。你通常不会需要这样的会议对象,虽然...也许你正在寻找的是:ASP.NET MVC - Set custom IIdentity or IPrincipal
看看global.asax – 2012-07-12 15:46:35