Saltar al contenido

.Net Core Model Binding JSON Post to Web API

Solución:

NOTA: Si está utilizando aspnet core 3.0, la solución se puede encontrar aquí. Para otras versiones, sigue leyendo.

Debe marcar su parámetro como proveniente del cuerpo con el FromBody atributo como este:

[HttpPost]
[Route("test1")]
[AllowAnonymous]
public IActionResult Test([FromBody] Class1 data)
{
    return Ok();
}

Debes asegurarte de que estás usando application/json como su tipo de contenido de Postman:

Aplicación cartero / json

Resultando en:

acción POST de json

Asegúrese de que los establecedores de su propiedad también sean públicos:

public class Person
{
    public String Name;
    public Int32 Age;
}

Yo también estaba luchando con esto, y pensé que compartiría un elemento que era necesario para mí y no en la respuesta aceptada, necesitaba agregar {get; set;} a cada atributo en mi clase como tal:

    public class LogString{
        public string val {get; set;}
        public string data {get; set;}
    }

El resto fue igual:

        [HttpPost]
        public void Post([FromBody] LogString message)
        {      
            Console.WriteLine(message.val);
        }

Después de agregar que comenzó a funcionar.

Yo tengo un ASP.Net Core 3.1 aplicación y para mí, ninguna de estas soluciones funcionó. Perdí algunos pelos (y horas de trabajo) hasta que encontré la documentación https://docs.microsoft.com/en-us/aspnet/core/web-api/jsonpatch?view=aspnetcore-3.1

En breve :

  1. Instala el Microsoft.AspNetCore.Mvc.NewtonsoftJson Paquete NuGet.
  2. Actualice el método Startup.ConfigureServices del proyecto para llamar AddNewtonsoftJson. Por ejemplo:

    public void ConfigureServices(IServiceCollection services)
    {
    services.AddRazorPages()
    .AddNewtonsoftJson();//this is important
    }

Eso es todo ! No necesito el [FromBody] atributo.

Si no funciona, verifique que las propiedades de su modelo tengan definidores (por ejemplo public string Message { get; set; }). No olvides al colocador.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *