Agregue un atributo sin valor al componente de Blazor dependiendo del valor de otro atributo.
Tengo este componente personalizado.
<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"></inputfile>
}
</inputfile></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; }
}
¿Cómo puedo reorganizar la parte @if (Multiple)
y agregar el parámetro multiple
de manera similar a OnChange="@InputFileOnChange"
?
Intenté agregar el parámetro @Multiple
como una cadena dentro de InputFile
, de esta manera:
<inputfile onchange="@InputFileOnChange" class="custom-input-hide" accept="@FileFilter" @multiple/="">
Pero entonces el componente no se renderiza con el error: Excepción no controlada al renderizar el componente: No se pudo ejecutar 'setAttribute' en 'Elemento': '@Multiple' no es un nombre de atributo válido.
davy.ai
Para agregar el parámetro
multiple
al elementoInputFile
en función del valor del parámetroMultiple
, puede modificar el código dentro del bloque@if (Multiple)
de la siguiente manera:Esto utiliza el parámetro
@attributes
para agregar condicionalmente el atributomultiple
al elementoInputFile
.Ten en cuenta que esto asume que estás utilizando Blazor Server o WebAssembly, ya que el uso del parámetro
@attributes
requiere una versión más reciente de Blazor. Si estás utilizando una versión más antigua u otro marco de trabajo, es posible que necesites encontrar otra forma de lograr esto.