繁体   English   中英

MVC部分视图以显示列表

[英]MVC Partial view to Display list

我有一个操作结果返回一个列表

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?

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

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

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

2-对于传递的模型,如果在具有ProfilesModel属性的视图中渲染此动作,则不必指定要传递给该动作的模型,因为它将隐式地从父级读取模型视图。

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

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

建议 :如果此局部视图仅呈现已传递的列表,则可以跳过创建提到的操作的过程,而只需进行调用即可呈现部分视图,并将正确的列表传递给该局部视图以便可以使用。

为了更加清楚,使用您的问题,我可以看到名为GetData的操作只是从传递的Profiles模型中构造了名为Vertical的列表,因此您可以在原始操作( IndexDetailsWHAT_EVER_THE_NAME_IS )中构造此列表并将其存储在ViewBag ,则可以调用RenderParial而不是RenderAction ,这将导致与您提到的方案相同的输出。

example: @{ Html.Partial("ViewName", YOUR_MODEL_HERE);}
@{Html.RenderAction("actionName","controllerName");}

从主视图中,您可以简单地将“ 部分视图”呈现为:

 @Html.Partial("_PartialViewName", VerticalList);

在这种情况下, VerticalList将是您在控制器操作中填充的VerticalContainer.Models.Vertical类型的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM