存取任何類別中的 ASP.NET 會話變數
ASP.NET 會話跨多個請求儲存使用者特定的資料。 雖然透過 Session["variableName"]
直接存取可以在網頁和控制項中工作,但從其他類別存取會話變數需要不同的方法。
解:使用 HttpContext.Current.Session
要從任何類別(包括 App_Code 資料夾中的類別)存取會話變量,請利用 System.Web.HttpContext.Current.Session
物件。該物件表示目前的 HTTP 請求及其關聯的會話狀態。
程式碼範例
此範例示範如何從 App_Code 中的類別存取名為「loginId」的會話變數:
<code class="language-csharp">using System.Web; namespace MyApplication { public class MyClass { public int LoginId { get { return (int)HttpContext.Current.Session["loginId"]; } set { HttpContext.Current.Session["loginId"] = value; } } } }</code>
改良的方法:會話包裝類別
為了增強類型安全性和程式碼清晰度,包裝類別提供了更強大的解決方案。此類別在會話中維護單一實例,並公開用於存取會話變數的屬性,從而消除類型轉換和硬編碼鍵。
包裝類別範例
<code class="language-csharp">namespace MyApplication { public class MySessionWrapper { public int LoginId { get; set; } public static MySessionWrapper Current { get { MySessionWrapper session = (MySessionWrapper)HttpContext.Current.Session["__MySession"]; if (session == null) { session = new MySessionWrapper(); HttpContext.Current.Session["__MySession"] = session; } return session; } } } }</code>
使用包裝類別存取
使用包裝器存取「loginId」非常簡單:
<code class="language-csharp">MySessionWrapper session = MySessionWrapper.Current; int loginId = session.LoginId;</code>
此方法提供了一種更清晰、更易於維護的方式來管理應用程式類別中的會話變數。
以上是如何從任何類別存取 ASP.NET 會話變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!