首页 > 解决方案 > .NET Core Web API:多个 [FromBody]?

问题描述

我正在将用 ASP.NET MVC 编写的代码转换为 ASP.NET Core MVC。在转换代码时,我遇到了一个问题。我们使用了一个具有多个参数的方法,如下所示:

[HttpPost]                                                      
public class Search(List<int> ids, SearchEntity searchEntity)           
{   
  //ASP.NET MVC                                                                   
}

但是在 .NET Core 中编码时,ids参数是null.

[HttpPost]                                                      
public class Search([FromBody]List<int> ids,[FromBody]SearchEntity searchEntity)           
{   
  //ASP.NET Core MVC                                                                   
} 

当我将ids参数放在SearchEntity类中时,没有问题。但是我有很多这样写的方法。我能做些什么来解决这个问题?

标签: asp.netasp.net-mvcasp.net-core.net-coreasp.net-core-mvc

解决方案


只能有一个FromBody,因为正文只能读取一次

ASP.NET Core 中的参考模型绑定

每个动作最多可以有一个参数,用[FromBody]. ASP.NET Core MVC 运行时将读取请求流的责任委托给格式化程序。一旦为参数读取了请求流,通常不可能再次读取请求流以绑定其他[FromBody]参数。

MVC Core 对如何将模型绑定到动作更加严格。当您想要自定义绑定行为时,您还必须明确指出要绑定数据的位置。


推荐阅读