2

C# と Razor を使用した ASP.NET MVC3 Web アプリケーションがあります。

ビューのフォームを介して、コントローラ AContext.User.Identity.Nameのアクション メソッドに送信されます。

この変数をアプリケーション全体 (複数のコントローラー間) で利用できるようにしたいと考えています。これで、 Controller A内のグローバル変数_UserNameに割り当てることができましたが、もちろんController Bでは使用できません。

それは可能ですか?

ありがとう

フランチェスコ

4

3 に答える 3

1

すべてのコントローラーが継承する親コントローラーを作成し、そこに変数を設定します。そこから多くのことを行うことができます-ビューモデルにラップする、ユーザーの詳細をViewBagに入れるなど。

public class UserController : Controller
{
    // create your own User class with as many properties as you need
    protected User user { get; set; }

    public UserController()
    {
        user = // get user from db, wherever
    }
}

次に、 UserController から継承するだけです

public class ControllerA : UserController
{
    public ActionResult DoSomething()
    {
        user.Property = 123;
    }
}
于 2011-05-05T15:10:52.460 に答える
1

コントローラーでこれにアクセスしている場合は、コントローラーメソッドで HttpContext.User.Identity を使用する必要があります-そこで利用できます。セッションに保存する必要はありません。

于 2011-05-05T14:52:52.810 に答える
0

キャッシュを調べ、場合によってはユーザーセッションを使用してこの情報を保存する必要があります。

この質問をチェックしてください。

于 2011-05-05T14:28:17.880 に答える