Asp.net-Mvc

ASP.NET MVC 中的會話變數

  • February 18, 2009

我正在編寫一個 Web 應用程序,它允許使用者瀏覽到網站中的多個網頁,發出某些請求。使用者輸入的所有資訊都將儲存在我創建的對像中。問題是我需要從網站的任何部分訪問這個對象,我真的不知道實現這一點的最佳方法。我知道一種解決方案是使用會話變數,但我不知道如何在 asp .net MVC 中使用它們。我將在哪裡聲明一個會話變數?還有其他方法嗎?

我認為您會想考慮事物是否真的屬於會話狀態。這是我發現自己時不時做的事情,它是一種很好的強類型方法,但是在將事情放在會話上下文中時應該小心。並非所有東西都應該存在,因為它屬於某個使用者。

在 global.asax 中鉤住 OnSessionStart 事件

void OnSessionStart(...)
{
   HttpContext.Current.Session.Add("__MySessionObject", new MySessionObject());
}

從程式碼中 HttpContext.Current 屬性 != null 的任何位置,您都可以檢索該對象。我使用擴展方法來做到這一點。

public static MySessionObject GetMySessionObject(this HttpContext current)
{
   return current != null ? (MySessionObject)current.Session["__MySessionObject"] : null;
}

這樣你就可以在程式碼中

void OnLoad(...)
{
   var sessionObj = HttpContext.Current.GetMySessionObject();
   // do something with 'sessionObj'
}

引用自:https://stackoverflow.com/questions/560084