Я пытаюсь построить таблицу без записи тегов и на родительской странице
В отличие от Html использования тегов, Blazor требует, чтобы вы также предоставили открывающие теги в качестве закрывающих тегов. Это необходимо для RenderTreeBuilder для построения виртуального DOM, который является базовым слоем, используемым для визуализации компонентов, и вычисления html diffs.
Однако вы можете добавить компонент, который должен быть визуализирован. как часть HeaderTemplate, например, следующий компонент служит заголовком таблицы домашних животных, отображая имя первого домашнего животного в списке домашних животных. Но, конечно, вы можете сделать его более сложным, например, когда пользователь выбирает питомца, вы меняете заголовок, чтобы отразить это, et c ...:
<TableTemplate Items="pets" Context="pet">
<TableHeader>
<tr><TableHeaderTitle Name="@pets.First().Name" /></tr>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</TableHeader>
<RowTemplate>
<td>@pet.ID</td>
<td>@pet.Name</td>
</RowTemplate>
</TableTemplate>
@code{
List<Pet> pets = new List<Pet>() { new Pet { ID = 1, Name = "Dog"},
new Pet {ID = 2, Name = "Cat" },
new Pet {ID = 3, Name = "Horse"}};
public class Pet
{
public int ID { get; set; }
public string Name { get; set; }
}
}
И ваш компонент TableHeaderTitle может выглядеть например:
<p>Name: @Name</p>
@code {
[Parameter]
public RenderFragment ChildContent { get; set; }
[Parameter]
public string Name { get; set; }
}
Обратите внимание, что вы также можете добавить свойство ChildContent типа RenderFragment, если хотите добавить дочерний контент в компонент.