Asp.net mvc 从另一个视图渲染局部视图(使用控制器操作)

Asp.net mvc 从另一个视图渲染局部视图(使用控制器操作),asp.net-mvc,razor,renderpartial,asp.net-mvc-controller,Asp.net Mvc,Razor,Renderpartial,Asp.net Mvc Controller,我有一个包含树视图的布局。treeview由一个AddressBookController填充,并通过@RenderPage(“addressbook.cshtml”)呈现到每个页面中(它当前位于共享)。问题是视图和控制器之间存在紧密耦合,如AddressBook.cshtml顶部所示。我有以下代码: @{ var controller = new EstateManagerUI.Controllers.AddressBookController(); var topLe

我有一个包含树视图的布局。treeview由一个
AddressBookController
填充,并通过
@RenderPage(“addressbook.cshtml”)
呈现到每个页面中(它当前位于
共享
)。问题是视图和控制器之间存在紧密耦合,如AddressBook.cshtml顶部所示。我有以下代码:

@{    
    var controller = new EstateManagerUI.Controllers.AddressBookController();
    var topLevelFolder = controller.GetAddressBook(0);
}

如何从控制器渲染局部视图,以便像普通视图一样渲染它?

您可以使用子操作和
Html.action
帮助程序。Phil Haack在这里写了一篇很好的关于子操作的博文:

创建一个返回
PartialViewResult

public ActionResult MyAction()
{
    // do some stuff
    return PartialView("_MyPartialView", myModel);
}
然后使用
@Html.Action(“MyAction”)