任意のクラスの ASP.NET セッション変数へのアクセス
ASP.NET セッションは、複数のリクエストにわたってユーザー固有のデータを保存します。 Session["variableName"]
を介した直接アクセスは Web ページおよびコントロール内で機能しますが、他のクラスからセッション変数にアクセスするには別のアプローチが必要です。
解決策: 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 中国語 Web サイトの他の関連記事を参照してください。