2016-12-27 29 views
0

我正在使用實體框架製作MVC應用程序。在我的數據庫中,我存儲了很多信息(還有關於我的用戶)。我希望我的導航欄(在佈局中)針對不同的用戶(基於實體)有所不同。通常我將我的實體傳遞給控制器​​,但是如何使用共享的佈局來實現這一點?MVC Layout.cshtml控件

+2

您可以設置一個viewbag條目(根據當前用戶類型),並檢查佈局中是否顯示不同的導航器 – 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

否。第二個參數是控制器參考。 –