Asp.net mvc MVC:如何让控制器渲染从视图启动的部分视图

Asp.net mvc MVC:如何让控制器渲染从视图启动的部分视图,asp.net-mvc,razor,asp.net-mvc-5,Asp.net Mvc,Razor,Asp.net Mvc 5,在我的MVC5项目中,我想在局部视图中创建一个菜单。此菜单是动态的,因为它是根据数据库中的内容构建的。因此,我有一个控制器负责创建菜单并将菜单模型返回到局部视图: public PartialViewResult GetMenu() { MenuStructuredModel menuStructuredModel = menuBusiness.GetStructuredMenu(); return PartialView("~/Views/Shared/MenuPartial",

在我的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.RenderPartialFromController("/MyController/GetMenu")

你应该使用:
@Html.RenderAction
@Html.Action

多亏了Stephen Muecke和Erick Cortorreal,我让它开始工作了

这就是控制器的外观:

[ChildActionOnly]
public PartialViewResult GetMenu()
{
   MenuStructuredModel menuStructuredModel = menuBusiness.GetStructuredMenu();

   return PartialView("~/Views/Shared/MenuPartial", menuStructuredModel);
}
它可能被称为:

@Html.Action(“GetMenu”、“Home”)

(因此在我的示例中,
HomeController
中声明了
GetMenu()


现在在渲染部分视图之前调用控制器(并填充模型)。

使用
[ChildActionOnly]
装饰您的
GetMenu()
方法,然后在视图中使用
@Html.Action(“GetMenu”,“MyController”)
非常感谢。它是有效的:-)@StephenMuecke你的评论一定是公认的答案!甚至连你自己的回答都不被接受(对我来说,指定局部视图时需要扩展(.cshtml)。
[ChildActionOnly]
public PartialViewResult GetMenu()
{
   MenuStructuredModel menuStructuredModel = menuBusiness.GetStructuredMenu();

   return PartialView("~/Views/Shared/MenuPartial", menuStructuredModel);
}