我有一个返回列表的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吗?
答案 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
的列表,因此您可以构建此列出原始操作(Index
,Details
,WHAT_EVER_THE_NAME_IS
)并将其存储在ViewBag
中,然后您可以拨打RenderParial
而不是{{1}这应该产生与你提到的场景相同的输出。
RenderAction
答案 1 :(得分:0)
@{Html.RenderAction("actionName","controllerName");}
答案 2 :(得分:0)
在主视图中,您只需将部分视图呈现为:
@Html.Partial("_PartialViewName", VerticalList);
在这种情况下,VerticalList 将是您在控制器操作中填充的 VerticalContainer.Models.Vertical 类型的列表。