そうすることの「正確さ」についてはいくつかの議論がありますが(下にリンクしています)、変数をHttpContext.Current.Application["BandProfile"]
に保存することができます。
if (bandProfile != null)
{
userManager.AddToRole(UserId, "Band");
//Store the bandprofile ID anywhere?
HttpContext.Current.Application["BandProfile"] = bandProfile;
return RedirectToAction("Index", "Welcome");
}
また、static
変数をクラスのどこかで使用することもできます。ここで
public static class BandProfile
{
public static whatever Profile;
}
if (bandProfile != null)
{
userManager.AddToRole(UserId, "Band");
//Store the bandprofile ID anywhere?
BandProfile.Profile = bandProfile;
return RedirectToAction("Index", "Welcome");
}
は同じ問題を扱うrelated questionあり、そしてhereは別です。
EDIT:
その後、これらの変数にアクセスするには、Microsoftによると
var bandProfile = HttpContext.Current.Application["BandProfile"];
または
var bandProfile = BandProfile.Profile;
を使用することができます。
ASP.NETには、従来のASPとの互換性を主な目的とするアプリケーション状態が含まれているため、既存のアプリケーションをASP.NETに移行する方が簡単です。 Applicationオブジェクトではなく、アプリケーションクラスの静的メンバーにデータを格納することをお勧めします。
つまり、static
可変メソッドを使用する必要があります。静的変数はClassName.Variable
を呼び出して利用でき、アプリの実行中は存在します。アプリが終了していたり、変数が変更されていると、この情報は失われます。
情報を保存するには、この変数の内容を外部ソース(DB、ファイルなど)に書き込み、アプリの起動時にその変数を読み込む必要があります。
クラス変数に値を代入すると、その変数に「永遠に」格納されていますか? – Bryan
セッションはどうですか? – Bryan
@ブライアンもっと具体的な答えを探していますが、私の理解では、変数はユーザーセッションの期間中設定されています。常に永遠に存在するグローバル変数にはなりません。 – levelonehuman