如何向Blazor组件添加HTML属性(类等)?

如何向Blazor组件添加HTML属性(类等)?,blazor,blazor-server-side,blazor-webassembly,Blazor,Blazor Server Side,Blazor Webassembly,这似乎是一个非常基本的问题,但我还没有找到我正在寻找的答案 假设您有一个名为的Blazor组件,该组件具有标签等参数。使用该组件时,这些参数会像HTML属性一样被接收: <Button Label="Sign Up" /> <Button Label="Sign Up" class="foo" type="submit" id="bar" /> 但是如何为组件设置实

这似乎是一个非常基本的问题,但我还没有找到我正在寻找的答案

假设您有一个名为
的Blazor组件,该组件具有
标签
等参数。使用该组件时,这些参数会像HTML属性一样被接收:

<Button Label="Sign Up" />
<Button Label="Sign Up" class="foo" type="submit" id="bar" />

但是如何为组件设置实际的HTML属性?!例如,假设您希望为组件表示的元素、标题属性、角色或类型等提供其他类。以下操作显然不起作用,因为组件标记上的所有属性都应该是该组件的参数:

<Button Label="Sign Up" />
<Button Label="Sign Up" class="foo" type="submit" id="bar" />

因此,我能想到的唯一方法是为该组件中的每个属性声明一个参数(公共属性)

<button type="@Type" class="button @Class" id="@Id">@Label</button>

@code {
    [Parameter]
    public string Class { get; set; }

    [Parameter]
    public string Type { get; set; }

    [Parameter]
    public string Role { get; set; }

    [Parameter]
    public string Id { get; set; }

    // And others
}
@标签
@代码{
[参数]
公共字符串类{get;set;}
[参数]
公共字符串类型{get;set;}
[参数]
公共字符串角色{get;set;}
[参数]
公共字符串Id{get;set;}
//及其他
}
然后在使用组件时,您可以执行以下操作:

<Button Label="Sign Up" Class="foo" Id="bar" Type="Submit" />

但这显然并不理想。这并不方便,而且似乎是一个不必要的抽象层

所以,我的问题是:这应该怎么做?如果有这样的事情,“标准”方式是什么。难道没有比为每个属性声明参数更方便的方法吗

我一般不熟悉SPA框架,所以我也想知道在其他SPA框架中通常是如何做到这一点的(例如React、Angular、Vue等)

谢谢。

您的目标是:

@ChildContent
@代码{
[参数(CaptureUnmatchdValues=true)]
公共字典输入属性{get;set;}
[参数]
公共RenderFragment ChildContent{get;set;}
}
您的目标是:

@ChildContent
@代码{
[参数(CaptureUnmatchdValues=true)]
公共字典输入属性{get;set;}
[参数]
公共RenderFragment ChildContent{get;set;}
}

查看属性飞溅@布莱恩帕克啊,谢谢你!你可以发布一个答案,我会把它标记为已接受的答案@布莱恩帕克啊,谢谢你!你可以发布一个答案,我会把它标记为已接受的答案。