2011-08-10 6 views
1

私はMVC3を使用しており、すべてのビューに共通のレイアウトファイルを持っています。レイアウトファイルでは、現在ログインしているユーザーに関する情報を表示したいと思います。MVC3のレイアウトファイルにアカウント情報を表示する最善の方法

私はこれで動いていますが、アクションメソッドでいくつかのViewBagフィールドを設定し、レイアウトファイルでそれらを取り上げる方法を見つけた唯一の方法です。これは、すべてのアクションメソッドからViewBagフィールドを取得するか、少なくともそれらを設定するメソッドを作成し、このメソッドをすべてのアクションメソッドから呼び出すことを意味します。

これを行うには中心的な方法はありますか? 1つの場所でレイアウトファイルを一度実行するのが一番良い方法ですが、他のオプションがない場合は、コントローラごとに1つの場所で十分です。

+0

この[質問]をご覧ください。[1]とほぼ同様である [1]:http://stackoverflow.com/questions/6548509/mvc3-best-practice-to-deal-withほぼすべての要求に対して必要なデータ –

答えて

7

適切な方法は、レイアウトファイル内のHtml.RenderAction()を呼び出して、ユーザー固有の詳細を入力することです。その後、適切なActionメソッドを作成して、ユーザーのアカウントの詳細を読み取り、ビュー(部分ビュー)または生のHTML(return Content("..."))として返します。

このようにして、レイアウトページをキャッシュして、ユーザーのアカウントの詳細領域をキャッシュしないようにすることもできます(すべてのユーザーが明らかに異なるため)。

ViewBagを設定するのは良い考えではありません。強くタイプするのではなく、MVCの正しいスキーマを壊します。

+0

優れたソリューション。実際に使用したくないViewBagを取り除きます。他のコントローラでは乱雑さがなく、ロジックを1つの場所に保持します。より多くを求めることができない:)たくさんありがとう! –

+0

歓迎します:-) –

関連する問題