2016-04-08 11 views
2

介してアクセスプロファイルIDを保管してください。ユーザーがプロファイルにログインしている間は、そのファイルにアクセスしてください。は、私はバンドプロファイルを作成し、次のコードを持っているアプリケーション

どうすればこの問題を解決できますか?

UserId = System.Web.HttpContext.Current.User.Identity.GetUserId(); 

が、私は同じことをしたい、しかしbandprofileIdで:たとえば

は、userIdをを得るために、あなたは、アプリケーションを介して、このように行うことができます。

答えて

0

そうすることの「正確さ」についてはいくつかの議論がありますが(下にリンクしています)、変数を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、ファイルなど)に書き込み、アプリの起動時にその変数を読み込む必要があります。

+0

クラス変数に値を代入すると、その変数に「永遠に」格納されていますか? – Bryan

+0

セッションはどうですか? – Bryan

+0

@ブライアンもっと具体的な答えを探していますが、私の理解では、変数はユーザーセッションの期間中設定されています。常に永遠に存在するグローバル変数にはなりません。 – levelonehuman

関連する問題