MVC3 Razor中的父子列表

时间:2012-02-18 13:44:58

标签: asp.net-mvc-3 razor parent

我正在尝试显示嵌套的Parent \ Child产品列表。我的表有一个Id字段和一个ParentId字段。我有List<> Product对象,现在我想在视图上显示它。我提出了以下解决方案,但我确信有更好的解决方案。

我的解决方案:

我知道主要产品\ group的名称,所以在循环遍历这些名称的数组时,我查询List<> Product.Name = =数组项的产品。一旦找到它,

我开始一个无序列表

    添加我的列表项

  • Product.Name

    通过查询列表<>来查找任何子项适用于ParentId == Product.Id的任何记录的产品。如果有一些,我几乎重复这个过程,但这次使用Child Product作为父产品并寻找它的孩子。 一旦产品没有更多子项,我关闭列表项

  • 然后关闭列表

尽管这有效,但现在我知道我的名单不会超过三个级别所以我只编写了这个意思,就是说一个伟大的大爸爸的孩子永远不会被看到。我想这样做会让它变得更加深入。有什么想法吗?

由于

1 个答案:

答案 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();
}