我正在使用Entity Framework制作MVC应用程序。在我的数据库中,我存储了很多信息(也是关于我的用户)。我希望我的导航栏(在布局中)对于不同的用户是不同的(基于实体)。通常我在控制器中传递我的实体,但是如何使用共享布局?
答案 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
。局部视图可以使用模型,布局将保持完全不可知。