将ViewModel传递给Layout.cshtml中的部分视图调用
背景
我正在尝试在我正在使用的MVC应用程序上使用Dashboard模板。
我不确定如何将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)