MVC部分视图显示列表

时间:2014-05-13 09:54:08

标签: c# asp.net-mvc

我有一个返回列表的Action结果

public ActionResult GetData(Profiles profiles)
{
    Vertical Vdata = new Vertical();
    List<Ver> Vertical = new List<Ver>();
       //Code to fill list
    return View(Vertical);
}

然后是部分视图以显示列表

@model  IEnumerable< List<VerticalContainer.Models.Vertical>>

@foreach(var item in Model)
{
 <span>@item.name</span>
}

我不确定如何从主视图中呈现局部视图

@Html.Action("GetData")?? 

我通过Html.Action传递什么?或者我应该使用Partial / RenderPartial吗?

3 个答案:

答案 0 :(得分:2)

1-呈现动作的正确方法如下:

@Html.RenderAction("ACTION_NAME","CONTROLLER_NAME")

根据您的解决方案,使用正确的值替换操作名称和控制器名称。

2-对于传递的模型,如果在Model属性为Profiles的视图内呈现此操作 ,那么你不必指定要传递给动作的模型,因为它会从父视图中隐式读取它。

如果不是这种情况,则需要将Profiles值存储在中型变量中(例如在ViewBag属性内),然后在调用操作时将其传递,所以它应该在这个传递的模型上工作,而不是在父视图上工作。

示例:@Html.RenderAction("ACTION_NAME","CONTROLLER_NAME", YOUR_MODEL_VALUE_HERE)

建议:如果这个parital视图只是渲染列表,你可以跳过创建上面提到的操作,只需调用一个可以呈现局部视图的调用,然后将正确的列表传递给它它可以使用。

为了更清楚,使用您的问题,我可以看到名为GetData的操作只是从传递的Vertical模型构建名为Profiles的列表,因此您可以构建此列出原始操作(IndexDetailsWHAT_EVER_THE_NAME_IS)并将其存储在ViewBag中,然后您可以拨打RenderParial而不是{{1}这应该产生与你提到的场景相同的输出。

RenderAction

答案 1 :(得分:0)

@{Html.RenderAction("actionName","controllerName");}

答案 2 :(得分:0)

在主视图中,您只需将部分视图呈现为:

 @Html.Partial("_PartialViewName", VerticalList);
在这种情况下,

VerticalList 将是您在控制器操作中填充的 VerticalContainer.Models.Vertical 类型的列表。