问题描述
我刚刚将ASP.NET Core项目从2.2升级到3.1,现在我的模型绑定不适用于POST记录。我读到默认的JSON序列化程序在.NET Core 3中从Newtonsoft.JSON更改为System.Text.Json。这可能是原因吗?
我的动作和课堂看起来像这样
[HttpPost]
public IActionResult Foo([FromBody]Bar req)
public class Bar
{
public string Fiz;
public int Buzz;
}
解决方法
是的。出现此错误的原因是新的JSON库。
由于某些原因,System.Text.Json
不填充字段,仅填充属性。因此,您需要更改类定义Bar
才能使用属性
public class Bar
{
public string Fiz { get; set; }
public int Buzz { get; set; }
}
序列化过程使用设置器,因此您不能忽略这些设置。
,我只想指出,如果修改模型不是您的选择,那么您可以添加JSON.NET支持。
只需安装以下nuget软件包:
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
然后在您的startup.cs(添加MVC)中执行:
services.AddMvc().AddNewtonsoftJson();
然后返回到JSON.NET,它是.NET Core 2.X项目使用的序列化程序。
https://dotnetcoretutorials.com/2019/12/19/using-newtonsoft-json-in-net-core-3-projects/