.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; }
}
我有一个 .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; }
}