根据其他属性值将没有值的属性添加到 Blazor 组件

sha*_*sky 1 c# razor blazor

我有这个自定义组件

<label class="btn-svg label-wrapper">
    @Title

    @if (Multiple)
    {
        <InputFile OnChange="@InputFileOnChange" class="custom-input-hide" accept="@FileFilter" multiple/>
    }
    else
    {
        <InputFile OnChange="@InputFileOnChange" class="custom-input-hide" accept="@FileFilter"/>
    }
</label>

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

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

    [Parameter]
    public bool Multiple { get; set; }

    [Parameter]
    public EventCallback<InputFileChangeEventArgs> InputFileOnChange { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

我如何返工@if (Multiple)零件并添加multiple参数,类似于OnChange="@InputFileOnChange"

我尝试@Multiple在 InputFile 中添加字符串参数。像这样 <InputFile OnChange="@InputFileOnChange" class="custom-input-hide" accept="@FileFilter" @Multiple/>

但随后组件未呈现错误 -Unhandled exception rendering component: Failed to execute 'setAttribute' on 'Element': '@Multiple' is not a valid attribute name.

Hen*_*man 5

您可以使用

<InputFile ... multiple="@Multiple" />
Run Code Online (Sandbox Code Playgroud)

@Multiple为 true 时false,Blazor 将删除“multiple”属性,当为 true 时,它​​将仅生成multipleHTML,而不会生成=.

对于等hidden,它的工作原理相同。disabled