我正在尝试显示嵌套的Parent \ Child产品列表。我的表有一个Id字段和一个ParentId字段。我有List<> Product对象,现在我想在视图上显示它。我提出了以下解决方案,但我确信有更好的解决方案。
我的解决方案:
我知道主要产品\ group的名称,所以在循环遍历这些名称的数组时,我查询List<> Product.Name = =数组项的产品。一旦找到它,
我开始一个无序列表
添加我的列表项
通过查询列表<>来查找任何子项适用于ParentId == Product.Id的任何记录的产品。如果有一些,我几乎重复这个过程,但这次使用Child Product作为父产品并寻找它的孩子。 一旦产品没有更多子项,我关闭列表项
尽管这有效,但现在我知道我的名单不会超过三个级别所以我只编写了这个意思,就是说一个伟大的大爸爸的孩子永远不会被看到。我想这样做会让它变得更加深入。有什么想法吗?
由于
答案 0 :(得分:0)
你尝试过这样的事吗?
在主视图中,渲染没有父级的产品:
@Html.Action("DisplayChildren", "ControllerName", new { parentId = null })
在局部视图中,递归渲染后代:
@model IEnumerable<Product>
<ul>
@foreach (var child in Model)
{
<li>
@Html.DisplayFor(m => child.Name)
@Html.Action("DisplayChildren", "ControllerName",
new { parentId = child.Id })
</li>
}
</ul>
在控制器中,只返回直接孩子:
public ActionResult DisplayChildren(int? parentId)
{
var children = GetDirectChildrenOf(parentId);
if (children.Count() > 0)
return PartialView(children);
else return new EmptyResult();
}