在我的MVC5项目中,我想要在一个部分视图中创建一个菜单。这个菜单是动态的,因为它是从我的数据库中的内容构建的。因此,我有一个控制器负责创建我的菜单并将菜单模型返回到我的部分视图:
public PartialViewResult GetMenu()
{
MenuStructuredModel menuStructuredModel = menuBusiness.GetStructuredMenu();
return PartialView("~/Views/Shared/MenuPartial", menuStructuredModel);
}
在我所谓的MenuPartial局部视图中,我想使用Razor来迭代我的菜单项,例如:
@model MyApp.Models.Menu.MenuStructuredModel
<div class="list-group panel">
@foreach (var category in Model.ViewTypes[0].Categories)
{
<a href="#" class="list-group-item lg-green" data-parent="#MainMenu">@category.ShownName</a>
}
</div>
现在问题是我插入局部视图的方式。如果在视图中只是这样做:
@Html.Partial("MenuPartial")
它不会首先调用控制器来填充模型数据。我希望的是让控制器返回部分内容。但我不知道如何从视图中实现这一点。在伪代码中,我想做类似以下的事情:
它不会首先调用控制器来填充模型数据。我希望的是让控制器返回部分内容。但我不知道如何从视图中实现这一点。在伪代码中,我想做类似以下的事情:
@Html.RenderPartialFromController("/MyController/GetMenu")
GetMenu()
方法上使用[ChildActionOnly]
装饰器,然后在视图中使用@Html.Action("GetMenu", "MyController")
。 - user3559349