我有一个模型,可以为我的网页加载补充工具栏,以及一个加载主要内容的模型。每个页面的内容模型都不同,而侧栏模型将保持不变。用户点击链接会更改内容模型:
~/Home/About
~/Home/Contact
我理想情况下想在_Layout.cshtml中添加一行代码来加载一个返回显示补充工具栏模型的PartialView的Controller。所以我们可能会:
<div id="sidebar">
@Html.Render("~/SidebarController/GetSidebar");
</div>
<div id="content">
@RenderBody()
</div>
但我知道这不行。我如何实现这一目标?
答案 0 :(得分:2)
我要做的是在@Html.Action("GetSidebar")
文件中使用_Layout.cshtml
,然后您可以在控制器中执行操作
public ActionResult GetSidebar()
{
//do stuff, populate menu items from database? etc
// Pass the data to the partial view
return PartialView("_Sidebar");
}
你需要在每个控制器中使用它,除非你把它放在一个基本控制器中,然后你可以在所有其他控制器上继承它并将[ChildActionOnly]
添加到你的行动的顶部,这样就不能直接打电话。
答案 1 :(得分:1)
我做同样的事情。我用:
@Html.Action("GetSidebar", "SidebarController")
绘制我的侧栏,它工作正常。我在更改视图时使用了ajax调用,以便一次又一次地加载侧边栏,并且我有ajax目标,“content”div用代表每个页面的局部视图替换其内容。