我是MVC核心的新手.
我已经创建了一个具有控制器的MVC核心的项目.该控制器具有Get和Post操作方法.如果我使用查询字符串传递数据到Get方法,它可以正常工作,但是当我将复杂的JSON传递给post方法时,它总是显示为null.
我在做什么
发布请求
URL: http://localhost:1001/api/users Content-Type: application/json Body: { "Name":"UserName","Gender":"Gender of the user","PhoneNumber":"PhoneNumber of the user" }
这是Post操作方法
[HttpPost] [Route("api/users")] public async Task<IActionResult> Post([FromBody]User newUser) { ... }
当post请求被调用时,newUser总是显示为null.如果我删除[FromBody]属性,那么我接收newUser对象,但是所有的字段都是空的.
请帮我指点一下这个问题.
EDITED
这是我的User类
public class User{ public int Id { get; set; } public string Name { get; set; } public string Gender { get; set; } public string PhoneNumber { get; set; } }
我已经做了相同的描述here的json数据,但仍然收到null.
解决方法
这可能是因为如何处理空值.将NullValueHandling设置为在AddJsonOptions中忽略,看看是否有效.
public void ConfigureServices(IServiceCollection services) { services .AddMvc() .AddJsonOptions(jsonOptions=> { jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore; }); }