Web ページ外の ASP.NET セッション変数へのアクセス
ASP.NET では、Session["key"]
を使用すると、Web ページまたはコントロール内でセッション変数に直接アクセスできます。 ただし、外部クラス (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>
このメソッドは、(null 合体演算子 ??
を使用して) エラー処理を改善し、型の不一致による潜在的な例外を回避します。 プロパティを使用すると、セッション値を設定したり取得したりすることもできます。
以上が外部クラスから ASP.NET セッション変数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。