blazor - 基于条件的 Blazor Renderfragment
问题描述
我的代码中有一个表格在表格中多次出现的表格模式,所以我想我可以将它外包到带有 RenderFragments 的模板中,例如:
<table class="table">
<thead>
<tr>@TableHeader</tr>
</thead>
<tbody>
@if (TableItems != null)
{
@foreach (var tableItem in TableItems)
{
<tr>
@TableRowTemplate(tableItem)
</tr>
<tr>
<td colspan="@Colspan">
<table class="table">
<thead>
@if (SubTableHeader != null)
{
<tr>@SubTableHeader</tr>
}
</thead>
<tbody>
@if (SubTableItems != null && TableRowTemplate != null)
{
@foreach (var subTableItem in SubTableItems)
{
<tr>@SubTableRowTemplate(subTableItem)</tr>
}
}
else
{
<div class="alert alert-info" role="alert">
@NotFoundMessage
</div>
}
</tbody>
</table>
</td>
</tr>
}
}
</tbody>
但是,只有在 tableItem 的属性为 true 时才会显示第二个表。变量的名称取决于类型,并且必须在 foreach 循环内访问:
<TableWithSubTableTemplate Items="pets" TItem="Pet">
<TableHeader>
<th>Name</th>
<th>Active</th>
<th>Options</th>
</TableHeader>
<TableRowTemplate>
<td>@pets.Name</td>
<td>....</td>
</TableRowTemplate>
if(@pets.Active) // This doesn't work, because of the [design][1]
{
<SubTableHeader>
.....
</SubTableHeader>
<SubTableRowTemplate>
.....
</SubTableRowTemplate>
}
</TableWithSubTableTemplate>
也不能添加参数,因为传递参数只能在外部 <TableWithSubTableTemplate> 中。处理这个问题的正确方法是什么?
解决方案
推荐阅读
- java - 尝试在java中发送邮件时出错
- c - 这是 C 中“makefile”的正确实现吗?
- hyperledger-fabric - Hyperledger Fabric:fabric-ca-client 使用的默认注册配置文件是什么?
- javascript - Javascript onclick充当退格按钮以删除插入符号之前的字符
- java - 不使用数组打印期望输出并从文件中读取
- azure - ASP.NET Core 2.2 应用无法在 Azure 应用服务上运行
- reactjs - 如何使被跨域读取阻止的背景图像显示出来?
- unix - 如何使用非 GNU sed 从 Makefile 向文件添加新行
- c - 如何更改我的函数以便可以将整个标头解析到新文件中?
- python - 从文本列中提取两列中的口粮。