У меня есть иерархический список типа Element
. Каждый Element
имеет ParentElement
и коллекцию ChildElements
.
Я написал рекурсивный помощник HTML, чтобы пройтись по иерархическому списку и распечатать каждый элемент в строку таблицы. Я хочу иметь возможность пометить каждый из элементов в таблице на основе их положения в иерархическом списке. Например
Подструктура не имеет дочерних элементов
Надстройка имеет 3 ChildElements
- верхние этажи, рама и крыша
Верхние этажи и каркас не имеют дочерних элементов
Крыша имеет 2 ChildElements
- Кровельные покрытия и конструкция крыши
У меня есть следующий HTML в представлении, которое вызывает рекурсивный помощник.
<table class="table table-bordered">
<thead>
<tr>
<td>Reference</td>
<td>Name</td>
</tr>
</thead>
<tbody>
@ShowTreeTable(Model.Elements, 1)
</tbody>
</table>
Рекурсивный помощник выглядит следующим образом.
@helper ShowTreeTable(List<Entities.Entities.Element> elements, int level)
{
for (int i = 0; i < elements.Count(); i++)
{
<tr>
<td>@level</td>
<td>@elements[i].Name</td>
</tr>
if (elements[i].ChildElements.Any())
{
@ShowTreeTable(elements[i].ChildElements.ToList(), level + 1)
}
}
}
У меня был более тщательно продуманный помощник, когда я пытался сделать это, но он не был близок, поэтому я лишил его этого.
В текущем примере результаты выглядят так.