将ViewModel传递给Layout.cshtml中的部分视图调用

背景

我正在尝试在我正在使用的MVC应用程序上使用Dashboard模板。

WebArch模板

我不确定如何将ViewModel传递给我称为Header的顶部栏。

在我的_Layout.cshtml ,我像这样拆分HTML:

  @Html.Partial("_Header") 
@Html.Partial("_Sidebar")
@RenderBody()

我猜这是错的,因为现在我无法将ViewModel传递给标题部分,或者如果我可以,我们不应该这样做?

分裂这个的正确方法是什么?

而不是@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)