2016-12-27 7 views
0

私は、Entity Frameworkを使用してMVCアプリケーションを作成しています。私のデータベースには、多くの情報(私のユーザーについても)が保存されています。私はNavbar(Layoutで)が異なるユーザ(エンティティに基づいて)に異なるようにしたい。通常、私はエンティティをコントローラに渡しますが、共有レイアウトでこれを行うにはどうすればよいですか?MVC Layout.cshtmlコントロール

+2

(現在のユーザータイプに基づいて)ビューバッグエントリを設定し、レイアウト内で異なるナビゲータを表示するように設定することができます – Shyju

答えて

1

使用した子アクション:

public class FooController : Controller 
{ 
    ... 

    [AllowAnonymous] 
    [ChildActionOnly] 
    public ActionResult Navbar() 
    { 
     var navbar = // retrieve navbar data 
     return PartialView("_Navbar", navbar); 
    } 
} 

あなたがこの中に入れて、コントローラが問題ではありません。子アクションを呼び出すときに参照するだけで済みます。たとえば、レイアウト内で:

@Html.Action("Navbar", "Foo") 

最後に、ナビゲーションバーを表示するために部分ビューを作成するだけです。この例では、それは_Navbar.cshtmlになります。部分図はモデルを利用することができ、レイアウトは完全に無関心のままです。

+0

レイアウトで子アクションを呼び出す場合は、レイアウトを使用するすべてのコントローラ? – DonO

+0

No. 2番目のパラメータはコントローラのリファレンスです。 –

関連する問題