Asp.net core ASP.NET Core 3.1-Json请求属性到操作方法参数模型绑定

Asp.net core ASP.NET Core 3.1-Json请求属性到操作方法参数模型绑定,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我正在将一个应用程序从ASP.NET MVC迁移到ASP.NET核心MVC 看起来ASP.NET核心模型绑定不支持将json对象的顶级属性绑定到操作方法属性绑定(这在ASP.NET MVC框架中受支持) 示例:我有一个这样的操作方法: ActionResult UpdateSomethingOnPost(string name, string id) { } 我发布Json正文如下。它不会将属性“name”绑定到“name”操作方法参数,也不会将“id”绑定到“id”操作方法参数 {

我正在将一个应用程序从ASP.NET MVC迁移到ASP.NET核心MVC

看起来ASP.NET核心模型绑定不支持将json对象的顶级属性绑定到操作方法属性绑定(这在ASP.NET MVC框架中受支持)

示例:我有一个这样的操作方法:

ActionResult UpdateSomethingOnPost(string name, string id) { }
我发布Json正文如下。它不会将属性“name”绑定到“name”操作方法参数,也不会将“id”绑定到“id”操作方法参数

{
    name: "Sachin",
    id: "1000"
}

我需要做哪些更改才能在ASP.NET Core中支持此功能?

添加
[HttpPost]
[FromBody]
属性如何

[HttpPost]
ActionResult UpdateMethingPost([FromBody]字符串名称,[FromBody]字符串id)
{
//废话废话
}
提到对于简单类型,需要添加
[FromBody]
属性:

FromBody推断注释
[FromBody]
对于字符串或int等简单类型不进行推断。因此,当需要该功能时,应将
[FromBody]
属性用于简单类型


给定的链接特定于web api应用程序。我想我正在寻找网络应用。对于mvc来说,这个链接甚至是,我在我的mvc应用程序中尝试过这个,但没有成功。看起来选项“SuppressInferBindingSourcesForParameters”仅适用于api控制器。(ConfigureApiBehaviorOptions)在asp.net core中,您不能直接传递json,然后使用单独的变量接受它。你有两种方法来改变它。首先,
更改接收参数类型
,使用包含名称和id字段的接收模型。另一种方法是更改传递参数的模式,
将json更改为form
,或者通过更改路由以route的形式传递参数。