【发布时间】:2015-02-10 23:33:52
【问题描述】:
我在从数据库查询时遇到问题。
我有这张桌子:
标识 |猫名 | ParentIdCat
我想创建一个这样的列表:
- Cat1
- Cat2 -> SubCat2a
- Cat3 -> SubCat3a -> SubCat3b -> ...
一种简短的菜单 子类别的数量不是固定的而是可变的。
我使用剃须刀(不是 MVC)。
【问题讨论】:
我在从数据库查询时遇到问题。
我有这张桌子:
标识 |猫名 | ParentIdCat
我想创建一个这样的列表:
一种简短的菜单 子类别的数量不是固定的而是可变的。
我使用剃须刀(不是 MVC)。
【问题讨论】:
当您不知道层次结构中有多少级别时,您需要使用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。它应该提供更多的背景知识和帮助。
【讨论】: