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

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

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 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!