asp.net-mvc - studio - web api c# tutorial
Asp.net core MVC post parĂ¡metro siempre nulo (5)
¿Estás en Microsoft.AspNetCore.Mvc 1.0.0
?
Si es así, intente enviar este objeto como su cuerpo en una solicitud (propiedades en camello):
{
"name":"UserName",
"gender":"Gender of the user",
"phoneNumber":"PhoneNumber of the user"
}
Soy nuevo en el núcleo MVC.
He creado un proyecto con núcleo MVC que tiene un controlador. Este controlador tiene métodos Get y Post action. Si paso datos al método Get utilizando una cadena de consulta, funciona bien, pero cuando paso JSON complejo al método de publicación, siempre aparece nulo.
Aquí lo que estoy haciendo:
Publicar solicitud
URL: http://localhost:1001/api/users
Content-Type: application/json
Body:
{
"Name":"UserName",
"Gender":"Gender of the user",
"PhoneNumber":"PhoneNumber of the user"
}
Aquí está el método de acción Post
[HttpPost]
[Route("api/users")]
public async Task<IActionResult> Post([FromBody]User newUser)
{
...
}
Cuando se llama a la solicitud de publicación, newUser siempre me muestra nulo. Y si elimino el atributo [FromBody] , recibo el objeto newUser pero todos sus campos son nulos.
Por favor ayúdame y guíame en este tema.
Editado
Aquí está mi clase de usuario
public class User{
public int Id { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string PhoneNumber { get; set; }
}
Hice lo mismo que se describe here para los datos de json, pero aún así recibe un valor nulo.
Creé un nuevo proyecto ASP.NET Core, agregué su funcionalidad y funciona. Por favor, revisa este proyecto en github.
Además, vea la captura de pantalla del registro con una comunicación simple con este controlador desde la consola del navegador: Salida de consola
Esto podría deberse a cómo se manejan los valores nulos. Establezca NullValueHandling en Ignore en AddJsonOptions y vea si eso funciona.
public void ConfigureServices(IServiceCollection services)
{
services
.AddMvc()
.AddJsonOptions(jsonOptions=>
{
jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
});
}
Su clase de usuario debe tener un constructor sin parámetros predeterminado para que esto funcione ...
Tenga en cuenta el método original Post([FromBody] User newUser)
Para los futuros lectores de Google, este mismo problema podría surgir si el método fuera Post(User newUser)
Tenga en cuenta la falta de [FromBody]
. Esto es un alejamiento de las versiones anteriores de MVC donde estos parámetros generalmente se inferían.
Si ya eres un desarrollador de MVC5 que encuentra esta página con respecto a AspNetCore.MVC , asegúrate de volver a verificar que tienes [FromBody]
decorado donde sea relevante.