我试着回答你的问题,而不是争论用例。您所能做的不是为您的组件创建一个.razor文件,而是一个纯C文件,并重写
BuildRenderTree
方法。这不像使用.razor文件那么方便,让编译器发挥它的魔力,但是它允许您根据标记参数插入任何HTML标记。
public class TabHeader : ComponentBase
{
[Parameter]
public String Tag { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
/// <inheritdoc />
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.OpenElement(0, Tag);
builder.AddMultipleAttributes(1, AdditionalAttributes);
builder.AddAttribute(2, "onclick", EventCallback.Factory.Create<MouseEventArgs>(this, TabSelected));
builder.AddContent(3, ChildContent);
builder.CloseElement();
}
private void TabSelected(MouseEventArgs obj)
{
// do something
}
}