MVC Layout.cshtml控件

时间:2016-12-27 16:59:14

标签: c# .net asp.net-mvc model-view-controller

我正在使用Entity Framework制作MVC应用程序。在我的数据库中,我存储了很多信息(也是关于我的用户)。我希望我的导航栏(在布局中)对于不同的用户是不同的(基于实体)。通常我在控制器中传递我的实体,但是如何使用共享布局?

1 个答案:

答案 0 :(得分: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。局部视图可以使用模型,布局将保持完全不可知。