代码:
[HttpPost("user/register")]
public IActionResult Register([FromBody] User user)
{
if (user?.Name is null || user?.Password is null)
{
return BadRequest(new {message = "User is null and/or name and password are not provided"});
}
else
{
// Add to db
return Json(user);
}
}
用户类:
public class User
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
public string Role { get; set; }
}
<小时/> 它应该基本上得到一个用户并将其添加到数据库中。我试着发送这个json:
{ "Name": "Batman", "Password": "IronmanSucks"}
应用程序捕获了请求,但用户对象为null。我也尝试过:
{ "user": { "Name": "Batman", "Password": "IronmanSucks"} }
但是根据这个documentation,第一个json应该运行良好。
这是postman中示例http请求的link
<小时/> 这是否与标题有关,还是.NET Core 2.0中的错误?
答案 0 :(得分:1)
只有当类型没有无参数构造函数时才会发生这种情况,因此可以通过添加这样来简单地修复它。
答案 1 :(得分:1)
我认为该模型即将失效,因此它为空。
您应该尝试在[BindNever]
和Role
属性的User类中添加Guid
属性,因为您还没有使用它们。
如果这不起作用,您可以尝试使用扩展类:
public class User
{
public string Name { get; set; }
public string Password { get; set; }
}
public class DataUser : User
{
public Guid Id { get; set }
public string Role { get; set; }
}
答案 2 :(得分:1)
如果您使用 MVC Core 而不是 MVC ,请确保添加 Json Formaters (来自 Microsoft.AspNetCore。 Mvc.Formatters.Json 强>)。在 Startup.cs :
中public void ConfigureServices(IServiceCollection services)
{
services
.AddMvcCore()
.AddJsonFormatters();
}
这可以帮助 [FromBody] 对您的帖子内容反序列化