我正在将用 ASP.NET MVC编写的代码转换为 ASP.NET 核心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
类中时,没有问题。但是我有很多这样写的方法。我能对此问题做些什么?
只能有一个FromBody
,因为正文只能读取一次
ASP.NET 核心中的参考模型绑定
每个用
[FromBody]
修饰的操作最多可以有一个参数。ASP.NET 核心 MVC 运行时将读取请求流的责任委托给格式化程序。读取参数的请求流后,通常无法再次读取请求流以绑定其他[FromBody]
参数。
MVC Core 在如何将模型绑定到操作方面更加严格。当您要自定义绑定行为时,还必须显式指示要从何处绑定数据。
我使用了一个解决方案,其中使用元组将多个参数作为 [FromBody] 发送:
[HttpPost]
public class Search([FromBody](List<int> ids, SearchEntity searchEntity) parameters)
{
//ASP.NET Core MVC
}