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

145
Vistas
Blazor WASM pasa obj a JS vacío a menos que se serialice como json. Otros objetos funcionan

Esencialmente, solo puedo pasar primitivos y tipos anónimos como argumento en la interoperabilidad de Blazor con JS.

Mi primera publicación sobre el desbordamiento de pila porque simplemente no puedo entender esto:

Este ejemplo funciona:

C#:

 async void doThing() { await JSRuntime.InvokeAsync<object>("test", new { Name = "John", Age = 35 }); }

JS:

 var test = funciton(stuff){ console.log(stuff); return stuff; } Output in JS is object with name and age as expected.

Ahora aquí está mi clase real:

 public class CarsAndBikes { public car[] cars; public bike[] bikes; } async void doThing() { await JSRuntime.InvokeAsync<object>("test", carsAdnBikes); }

No es tan complejo, pero lo que puedo ver en JS es un objeto vacío, a menos que lo serialice como JSON y lo deserialice. coche y moto son clases. C#

 JsonConvert.SerializeObject(CarsAndBikes);

JS:

 JSON.parse(stuff)

Entonces funciona bien. No tengo idea de por qué no puedo pasar mi clase a JS, ¿alguien sabe si estoy haciendo algo mal o es un error?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Aquí hay una demostración de trabajo simple usando su código. Funciona, por lo que hay algo que no nos muestra que rompe su código. ¿Cómo es Car and Bike ?

 @page "/" @inject IJSRuntime Js <PageTitle>Index</PageTitle> <button class="btn btn-primary" @onclick=doThing>Object</button> <button class="btn btn-secondary" @onclick=doBookThing>Book as Object</button> <button class="btn btn-dark" @onclick=doBook>Book</button> <button class="btn btn-info" @onclick=doBooks>Books</button> @code { async void doThing() { await Js.InvokeAsync<object>("test", new { ID = 1, Title = "Fred" }); } async void doBookThing() { await Js.InvokeAsync<object>("test", new Book { ID = 1, Title = "Portugal" }); } async void doBook() { await Js.InvokeAsync<Book>("test", new Book { ID = 1, Title = "Shaun" }); } async void doBooks() { await Js.InvokeAsync<object>("test", new Catalog()); } public class Book { public int ID { get; set; } public string Title { get; set; } = string.Empty; } public class Catalog { public List<Book> Books { get; set; } = new List<Book> { new Book { ID=10, Title="Jon" }, new Book { ID=11, Title="Spain" } }; } }

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza 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