在Blazor中,如何动态更改HTML标签?

时间:2020-10-04 15:25:54

标签: c# asp.net-core blazor

假设我的Blazor组件中具有以下标记:

<div @attributes=Attributes data-myattr="something">
    @ChildContent
</div>

我想为父组件提供一种方法来确定将使用哪个标签代替<div>。像这样:

<@Tag @attributes=Attributes data-myattr="something">
    @ChildContent
</@Tag>

@Tag为字符串参数。当然那行不通。我知道模板,但是它对我不起作用,因为我想控制标签的结构,并为其添加额外的属性。我只想让用户选择要显示哪个标签。

1 个答案:

答案 0 :(得分:3)

创建.cs文件而不是使用.razor文件。

在文件中创建您的课程public class MyComponent: ComponentBase

,然后覆盖BuildRenderTree

protected override void BuildRenderTree(RenderTreeBuilder builder)
{
  builder.OpenElement(0, YourParameter);
  builder.CloseElement();
}

如果您不确定如何使用RenderTreeBuilder,只需创建一个临时剃刀文件并创建所需的标记,然后查看obj\Debug\netstandard2.1\Razor\