ASP.NET MVC3でアプリケーション全体でオブジェクトを共有します
-
29-10-2019 - |
質問
C#とRazorを使用したASP.NET MVC3 Webアプリケーションがあります。
ビューのフォームを通して、私は取得します Context.User.Identity.Name
aのアクションメソッドに提出 コントローラーa.
この可変アプリケーション全体(複数のコントローラー間)を利用できるようにしたいと思います。今、私はそれをグローバル変数に割り当てることができます _Username 以内 コントローラーa, 、もちろん、入手できません コントローラーb.
それをすることは可能ですか?
ありがとう
フランチェスコ
解決
任意のコントローラーでこれにアクセスしている場合は、コントローラーメソッドでhttpcontext.user.identityを使用する必要があります。セッションに保存する必要はありません。
他のヒント
すべてのコントローラーが継承し、そこから変数を設定する親コントローラーを作成します。そこから多くのことをすることができます - ビューモデルでそれを描き、ユーザーの詳細を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;
}
}
キャッシュを調べ、場合によってはユーザーセッションを使用してこの情報を保存する必要があります。
チェックアウト これ 質問。
所属していません StackOverflow