es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar el parámetro multiple al elemento InputFile en función del valor del parámetro Multiple, puede modificar el código dentro del bloque @if (Multiple) de la siguiente manera:

    <inputfile onchange="@InputFileOnChange" class="custom-input-hide" accept="@FileFilter" @attributes="Multiple ? new { multiple = true } : null"></inputfile>
    

    Esto utiliza el parámetro @attributes para agregar condicionalmente el atributo multiple al elemento InputFile.

    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.

Comments are closed.