.net核心web api倍数[FromBody]

时间:2018-05-27 13:37:02

标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc

我正在将ASP.Net MVC中编写的代码转换为ASP.Net Core MVC。当我转换代码时,我遇到了一个问题。我们使用了一个包含多个参数的方法:

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

但是编码时.net核心 ids 参数为空。

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

当我在SearchEntity类中使用“ids”参数时没有问题,但我有很多像这样编写的方法。我该怎么办这个问题?

1 个答案:

答案 0 :(得分:6)

只能有一个FromBody,身体只能读一次

参考Model Binding in ASP.NET Core

  

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

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