我正在使用 Asp.Net Core 8。
我有以下内容:
public class EventIdsWrapper
{
public int[] EventIds { get; set; }
}
在 Web API 控制器中:
[Route("transfersLog"), HttpPost()]
public async Task<IActionResult> GetTransfersLog([FromForm] EventIdsWrapper eventIds)
{
var data = await SomeService.GetTransfersLogs(eventIds, db);
var result = new
{
data = data,
total = data.Count
};
return Ok(result);
}
这是从浏览器发送的内容:
EventIds=1246501&EventIds=1375324&EventIds=1380287&EventIds=1738599&EventIds=1741915&EventIds=1743859&page=1&start=0&limit=25
内容类型为
application/x-www-form-urlencoded; charset=UTF-8
。
问题是 eventIds.EventIds 为空。为什么无人居住?我缺少什么?根据 docs 这应该有效。他们以此为例:
selectedCourses=1050&selectedCourses=2000
。
旁注,此代码适用于 Asp.Net Mvc 5.*(使用
[FromBody]
而不是 [FromForm]
)。
更新:
此变体有效,我将数组参数直接绑定到表单数据:
[Route("transfersLog"), HttpPost()]
public async Task<IActionResult> GetTransfersLog([FromForm] int[] EventIds)
{
var data = await SomeService.GetTransfersLogs(eventIds, db);
var result = new
{
data = data,
total = data.Count
};
return Ok(result);
}
我仍然很好奇为什么另一个选项不起作用。还有其他情况下,表格中包含更多数据。这是否意味着数组必须与表单的其余部分分开才能成功绑定它们?
蒂亚