存取網頁外部的 ASP.NET 會話變數
在 ASP.NET 中,使用 Session["key"]
直接在網頁或控制項中存取會話變數非常簡單。 但是,從外部類別(例如 App_Code
資料夾中的類別)存取它們需要不同的方法。
直接存取方法:
從任何類別檢索會話值的最直接方法是使用 System.Web.HttpContext.Current.Session["key"]
。這提供了對會話狀態的訪問,而不管類別的位置如何。 例如,要取得「loginId」會話變數:
<code class="language-csharp">int loginId = (int)System.Web.HttpContext.Current.Session["loginId"];</code>
改良的方法:會話包裝類別
為了增強類型安全性、可維護性和程式碼清晰度,建議使用包裝類別。 這集中了會話金鑰管理,減少了類型轉換,並允許預設值初始化。
這是一個例子:
<code class="language-csharp">public class SessionWrapper { private static SessionWrapper _instance; public static SessionWrapper Instance { get { return _instance ??= new SessionWrapper(); } } public string Property1 { get => (string)System.Web.HttpContext.Current.Session["Property1"] ?? ""; set => System.Web.HttpContext.Current.Session["Property1"] = value; } public int LoginId { get => (int?)System.Web.HttpContext.Current.Session["LoginId"] ?? 0; set => System.Web.HttpContext.Current.Session["LoginId"] = value; } }</code>
現在,存取會話變數變得更加清晰:
<code class="language-csharp">int loginId = SessionWrapper.Instance.LoginId;</code>
此方法提供更好的錯誤處理(使用空合併運算符??
)並避免類型不匹配導致的潛在異常。 使用屬性還允許設定會話值以及檢索它們。
以上是如何從外部類別存取 ASP.NET 會話變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!