【发布时间】:2018-11-06 05:46:28
【问题描述】:
我正在将用 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 类中时,没有问题。但是我有很多这样写的方法。这个问题我该怎么办?
【问题讨论】:
-
只能有一个FromBody,因为body只能读取一次
-
ids来自哪里。正文或网址 -
您使用的是 MVC(来自“视图”的帖子)还是 WebAPI(来自 Ajax/JavaScript 的 http 帖子请求)?
[FromBody]仅用于反序列化 json(或任何其他配置的格式化程序,例如 xml)。对于 MVC 帖子,如果您的数据以id=1&id=2&id=3&searchEntity.Value=abc123&searchEntity.OtherValue=xyz的格式发布,您需要[Bind("Value, OtherValue", Prefix="searchEntity"]或类似的东西。 -
来自 MVC 的请求以
multipart/form-data的形式出现,并且与 url 查询的格式类似 =>key=value&key2=value2&key3=value3其中 Webapi 请求通常是负载中的 xml 或 json,带有application/json或application/xml哑剧类型 -
在
SearchEntity类中使用所有用于搜索的参数不是很有意义吗?如果ids参数用于查询或过滤,则在SearchEntity中包含它的属性。
标签: asp.net asp.net-mvc asp.net-core .net-core asp.net-core-mvc