Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.2K
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!