从数据库查询[Razor]

时间:2015-01-23 10:59:19

标签: database razor menu

我的数据库查询有问题。

我有这张桌子:

id | CatName | ParentIdCat

我想创建一个这样的列表:

  • Cat1
  • Cat2 - > SubCat2a
  • Cat3 - > SubCat3a - > SubCat3b - > ...

一种简短的菜单 子类别的数量不是固定的,而是可变的。

我使用剃刀(不是MVC)。

1 个答案:

答案 0 :(得分:0)

当您不知道层次结构中有多少级别时,您需要使用recursive function来显示数据。您可以在Razor网页中使用helper来做到最好。您可以一次性选择所有数据,然后将其传递给可能如下所示的帮助程序:

@helper  BuildMenu(IEnumerable<dynamic> menu, int? parentid = null) {
    var items = menu.Where(m => m.ParentIdCat == parentid);
    var topLevel = true;
    if (items.Any()) {
        if(items.First().ParentIdCat.HasValue){
            topLevel = false;
        }
        foreach (var item in items) {
            if (!topLevel) 
            {
                @: ->
            }
            else
            {
                <br />
            }
            @item.CatName
            @BuildMenu(menu, item.Id)
        }
    }
}

我写了article looking at using Recursion in Razor Web Pages。它应该提供更多的背景和帮助。