背景
我正在尝试在我正在处理的MVC应用程序上使用仪表板模板。
我不确定如何将ViewModel传递到我称为Header的顶栏。
CODE
在我的_Layout.cshtml
中,我将HTML拆分为:
<body class="">
@Html.Partial("_Header")
<div class="page-container row-fluid">
@Html.Partial("_Sidebar")
<div class="page-content">
<div class="content">
@RenderBody()
</div>
</div>
</div>
</body>
我猜这是错的,因为现在我无法将ViewModel传递给标题部分,或者如果我可以,我们不应该这样做?
分裂这个的正确方法是什么?
答案 0 :(得分:4)
而不是@Html.Partial()
,使用@Html.Action()
或@{ Html.RenderAction(); }
来调用[ChildActionOnly]
控制器方法来初始化仪表板的模型并返回部分视图,例如
[ChildActionOnly]
public PartialViewResult Header()
{
// initialize a model
return PartialView("_Header", model)
}
并在布局中
@{ Html.RenderAction("Header", yourControllerName); }
另一种方法是,您在使用该布局的每个视图中使用的模型需要一个属性,该属性是用于生成仪表板然后使用@Html.Partial("_Header", Model.yourDashBoardProperty)