我有一個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