私は、背後にc#コードを含むasp.netプロジェクトがあります。たとえば、現在選択されている製品など、いくつかの情報を格納するGlobalVariableという静的クラスがあります。
しかし、ウェブサイトを使用しているユーザーが2人いる場合、選択した製品を変更した場合、すべてのユーザーが変更した場合に、静的変数は誰でも共有できるようです。
(c#コードから)c#コードからだけでなく、ページからだけでなく任意のクラスからも使用されるある種のセッション変数を作成したいと思います。
はい、静的変数はアプリケーション全体で共有されます。これらはユーザー/セッションにプライベートではありません。
非ページクラスからSessionオブジェクトにアクセスするには、HttpContext.Current.Session
を使用する必要があります。
GlobalVariable
は誤解を招く名前です。それが何と呼ばれていても、セッションごとの場合はstatic
であってはなりません。代わりに次のようなことができます:
// store the selected product
this.Session["CurrentProductId"] = productId;
Session
コレクションをグローバルにアクセスできるようにしてはいけません。むしろ、必要なデータのみを渡し、必要に応じてSession
を使用して取得/設定します。
MSDNの ASP .NETのセッションストレージ での作業の概要を次に示します。
あなたは自分の質問に答えました。答えはセッション変数にあります。 GlobalVariableクラスには、セッション変数に基づくプロパティを配置できます。
例:
public string SelectedProductName
{
get { return (string)Session["SelectedProductName"]; }
set { Session["SelectedProductName"] = value; }
}