[英]Has model binding changed from 2.2 to 3.0 Asp.NetCore
我正在尝试访问 3.0 api 上的端点。 我以与现有应用程序相同的方式传递所有参数,使用字符串类型的字典。 但是现在我收到了一个 400 错误的请求,这是因为属性 UserId 是一个 int。
public class ConfirmCreatedRequest
{
public int UserId { get; set; }
public string Password { get; set; }
public string MemorableWord { get; set; }
}
下面是使用原始字典并将字典更改为字符串、对象的 json 示例。
"{\"UserId\":\"90744\",\"Password\":\"\",\"MemorableWord\":\"\"}"
"{\"UserId\":90750,\"Password\":\"\",\"MemorableWord\":\"\"}"
问题是我不想这样做,因为它不是类型安全的。
我想知道 3.0 中发生了什么变化以及它是否已在 3.0.1 中修复
默认序列化Newtonsoft.Json
已从Newtonsoft.Json
更改为System.Text.Json
,因此某些序列化行为将发生变化。
如果您希望它的行为与2.x
一样,您可以使用以下命令将Newtonsoft.Json
设为默认值:
services.AddMvc()
.AddNewtonsoftJson();
请参阅此处的文档: https : //docs.microsoft.com/en-us/aspnet/core/migration/22-to-30? view = aspnetcore-3.0 & tabs = visual-studio#jsonnet- support
如果您想制作当前的 JSON 并像他们对新System.Text.Json
所做的那样输入序列化/反序列化,您可以在这里阅读: https : //github.com/dotnet/corefx/issues/39473
这个问题是由 Stackoverflows Nick Craver 提出的,其中有自定义转换器可以为您提供所需的内容,并表明有计划支持5.0
“更宽松”的反序列化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.