.Net Core 2.1 ModelBinding 在发布时不起作用 JSON

.Net Core 2.1 ModelBinding not working when posting JSON

我有一个 .net core 2.1 解决方案,包括一个网络应用程序、一个 API 和一堆库。

我正在尝试 post JSON 到 Web 项目的控制器中,但它不起作用 - 我在 JSON 中设置的属性似乎只是被设置为其默认值。

我试过使用和不使用 [FromBody] 属性,但都没有成功。

这就是我在控制器中的内容

[HttpPost]
public async Task<JsonResult> Search([FromBody] int test)
{
    Json(new
    {
        IThinkYouPassed=test,
    });
}

没什么异常。

我正在 post 使用具有以下正文的 PostMan 对此进行处理:

{
    "test":"234"
}

如果我在 action 中放置一个断点并点击它,我可以看到 test 的值为 0。

我对 API 项目中的操作没有这个问题,所以 Web 项目中一定缺少某些东西 - 需要完成一些设置才能使其工作?

我在使用 jquery 到 post 数据时得到相同的结果,所以我相当确定问题出在网络应用程序上,而不是我在 postman 中遗漏的东西.

我认为可能未指定 InputFormatter,但我告诉我这应该作为 UseMVC 扩展的一部分自动发生?

感谢任何帮助。

您的 json 是一个包含 test 字段的对象。你应该改变

public async Task<JsonResult> Search([FromBody] int test)

public async Task<JsonResult> Search([FromBody] TestDto testDto)

其中 TestDto.cs 包含测试字段

public class TestDto {
  public int Test { get; set; }
}