如何在asp.net mvc中动态生成树

时间:2015-12-21 19:22:35

标签: asp.net-mvc foreach tree bulletedlist

我在数据库中有一个名为“Tabel_Items”的表,其中包含以下字段:idparentchild

enter image description here

我想生成html标签,例如:

<ul>
    <li>parent1
        <ul>
            <li>child1</li>
            <li>child2
                <ul>
                    <li>child21</li>
                    <li>child22</li>
                </ul>
            </li>
        </ul>
    </li>
    <li>parent2
        <ul>
            <li>child3</li>
        </ul>
    </li>
</ul>

我使用LINQ查询获取项目并将其传递给视图:

public ActionResult Index()
{

    DataClasses1DataContext db = new DataClasses1DataContext();
    var items = from i in db.Table_Items
                select i;

    return View(items);
}

如何在视图中循环显示“项目”并从中创建树列表?

我想要一个lambda表达式来选择那些首先包含“parentId == null”的行。我测试这样的代码,但有一个错误:

@foreach (var i in Model)
{
        @Html.DisplayFor(x => i.ItemName.Where(i.ParentId==null));
}

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。谢谢我:

<ul>
@foreach (var x in Model.Where(f => f.ParentId == null))
{
    <li>
        @Html.DisplayFor(f => x.ItemName)
        <ul>
            @foreach (var y in Model.Where(c => c.ParentId == x.Id))
            {
                <li>
                    @Html.DisplayFor(c => y.ItemName)
                    <ul>
                        @foreach (var z in Model.Where(c => c.ParentId == y.Id))
                        {
                            <li>@Html.DisplayFor(c => z.ItemName)</li>
                        }
                    </ul>
                </li>
            }
        </ul>
    </li>
}
</ul>