Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.2K
Vistas
Blazor Wasm: no se puede convertir de 'grupo de métodos' a 'EventCallback'

Tengo una aplicación Blazor Server simple que funciona bien.

Estoy tratando de crear una aplicación equivalente usando Blazor WebAssembly con dotnet 5.

En la aplicación de trabajo, tengo un componente razor que permite al usuario cargar archivos usando el paquete nuget BlazorFileUploader

Margen:

 <InputFile multiple OnChange="HandleFileSelected"/>

Código detrás:

 public async Task HandleFileSelected(IFileListEntry[] files) { if (!ValidateFiles(files, out _errorMsg)) { return; } etc...

Cuando intento compilar la aplicación wasm, aparece el siguiente error

CS1503 Argumento 2: no se puede convertir de 'grupo de métodos' a 'EventCallback'

imagen de error

¿Alguna idea de lo que estoy haciendo mal?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

No creo que OnChange eventcallback admita un parámetro de tipo IFileListEntry[]

Intenta cambiar tu código detrás a:

 public async Task HandleFileSelected(InputFileChangeEventArgs e) { var files = e.GetMultipleFiles(); }
over 4 years ago · Santiago Trujillo Denunciar

0

Jonas tiene razón; su método debe aceptar InputFileChangeEventArgs en lugar de IFileListEntry[] . Si pasa el cursor sobre OnChange en Visual Studio 2019, debería ver algo como esto: ingrese la descripción de la imagen aquí

El controlador de eventos espera un delegate EventCallback que pueda aceptar hasta 1 parámetro de tipo InputFileChangeEventArgs . Piense en un delegate como una interfaz de método: su declaración de IFileListEntry[] no coincide con la interfaz, por lo que obtiene un error.

Si inspecciona InputFileChangeEventArgs , puede ver cómo obtener los archivos:

 public async Task HandleFileSelected(InputFileChangeEventArgs args) { IReadOnlyList<Microsoft.AspNetCore.Components.Forms.IBrowserFile> files = args.GetMultipleFiles(args.FileCount); // ...
over 4 years ago · Santiago Trujillo Denunciar

0

Gracias a Connor y Jonas por las respuestas. La causa del problema fue que la antigua aplicación Blazor Server se creó con .Net Core 3.1. Esto no contiene un componente "InputFile" en el espacio de nombres Microsoft.AspNetCore.Components.Forms. Esto explica por qué recurrí al paquete nuget "BlazorFileUploader" de terceros.

Al compilar la nueva aplicación Blazor WebAssembly, elegí dotnet 5. El problema era que el marcado ahora resolvía "InputFile" en el espacio de nombres Microsoft.AspNetCore.Components.Forms en lugar del espacio de nombres BlazorFileUploader.

Entonces, podría arreglarlo de una de dos maneras:

  • Califique completamente el marcado a <BlazorFileUploader.InputFile
  • Elimine el paquete nuget de terceros y refactorice el código para utilizar el componente InputFile ahora disponible en la versión dotnet5 del espacio de nombres de Microsoft

Decidí ir con los segundos de las dos opciones.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda