如何渲染在另一个视图中处理自己的控制器的局部视图?

时间:2011-10-24 20:46:35

标签: c# asp.net-mvc

我是MVC新手,我想在视图中弹出一个局部视图,但我想知道如何提供局部视图的模型。

<div id="enumsDialog" class="dialog">
    @Html.Partial("~/Views/Enumeration/List.cshtml", [it needs a modal here])
</div>

换句话说,我希望局部视图能够处理自己的控制器。

如何实现?

2 个答案:

答案 0 :(得分:1)

如果您想渲染其动作/数据来自不同控制器的局部视图,那么您可能希望使用RenderAction方法:

@Html.Action("MyAction", "MyController")

如果您想使用当前viewmodel中的数据呈现部分视图(无需再提出应用程序请求),请使用RenderPartial方法:

@Html.Partial("NameOfView", Model.WhateverYouArePassing)

答案 1 :(得分:1)

最简单的方法是:

public class EnumerationController : Controller {

    // other actions...

    public ActionResult List(){
        // TODO: var model = retrieve-your-model-here
        return PartialView(model);
        // using "PartialView" instead of "View" method ensures this action isn't 
        // responsible from direct requests
        // Also you can use "PartialViewResult" class as a return-type instead
        // of "ActionResult" in method, like "List2()" method below:
    }

    public PartialViewResult List2(){
        // TODO: var model = retrieve-your-model-here
        return PartialView(model);
    }
}

并在.cshtml档案中:

@{Html.RenderAction("List", "Enumeration");}
// or:
@Html.Action("List", "Enumeration")