我有一个名为BusinessUnit的对象,它包含一个子业务单元的列表,我需要一个函数来呈现其父级下的每个子元素的< li>元素。到目前为止,我掌握的代码如下:
<ul id="Level0">
@foreach (var bizUnit in businessUnitViewModel.BusinessUnitInfos)
{
<li>
<span>@bizUnit.BusinessUnitName</span>
<ul class="nested">
@foreach (var childOfbizUnit in bizUnit.Children)
{
<li>@childOfbizUnit.BusinessUnitName</li>
}
</ul>
</li>
}
</ul>嵌套的预测与第一个基本相同,但硬编码限制了我可以拥有多少层次级别。我需要这样的功能:
public void HasKids(BusinessUnitInfo bizUnit)
{
foreach (var bizUnitChild in bizUnit.Children)
{
//Render an <li> tag element with bizUnitChild's
name<li>bizUnitChild.Name</li>
HasKids(bizUnitChild);
}
}有谁知道我能为最后一个代码块中的注释做些什么吗?我能使用C#代码动态地呈现一个列表标记吗?Thans :)
发布于 2019-07-18 10:16:50
如果该结构是一棵树,那么实际上需要一个递归组件。
备注:出于性能考虑,在从循环生成UI标记时,应该始终使用@key指令。您可以在布拉索大学上阅读更多内容。
<li>
@Item.Name
if (@Item.Children.Any())
{
<ul id="@level">
@foreach(var child in Item.Children)
{
<ShowItem Item=@child Level="@(Level + 1)" @key=child/>
}
</ul>
}
</li>
@code {
[Parameter] MyElementClass Item { get; set; }
[Parameter] int Level { get; set; }
}在你的主页上,你只需这样做
<ul level="0">
@foreach(var item in TopLevelItems)
{
<ShowItem Item=@item Level=1 @key=item/>
}
</ul>发布于 2020-05-27 12:23:41
我对Peter Morris的代码做了一些改进:
<li>
@Item.Name
@if (Item.Children != null && Item.Children.Any())
{
<ul class="@Level">
@foreach(var child in Item.Children)
{
<ShowItem Item=@child Level="@(Level + 1)" @key=child/>
}
</ul>
}
</li>
@code {
[Parameter] public MyElementClass Item { get; set; }
[Parameter] public int Level { get; set; }
}我添加了null检查,因为当属性为null时有问题,修正了ul的Id中的一个错误,并将id更改为类。
https://stackoverflow.com/questions/57091756
复制相似问题