You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core请求中idList字段必填错误的解决求助

问题解决方法

核心问题:GET 请求不支持 [FromBody] 绑定

ASP.NET Core 中,GET 请求的设计初衷是不带请求体的,框架对 GET 请求的 [FromBody] 参数绑定支持有限,这是导致你收到必填字段错误的根本原因。

方案一:改用 POST 请求(推荐)

1. 修改控制器方法

将 HttpGet 改为 HttpPost,保留 [FromBody] 绑定:

[HttpPost("listById")]
public async Task<IActionResult> ListById([FromBody] IdListDto idList) =>
       await Handle(Service.FindByList(idList));

2. 调整请求格式

请求体使用与 IdListDto 匹配的 JSON 结构,同时确保请求头设置 Content-Type: application/json:

{
  "Ids": [123, 456, 789]
}

方案二:坚持使用 GET 请求(不推荐,不符合 REST 规范)

如果必须用 GET,放弃 [FromBody],改用查询参数传递 ID 列表:

1. 修改控制器方法

[HttpGet("listById")]
public async Task<IActionResult> ListById([FromQuery] ulong[] ids) =>
       await Handle(Service.FindByList(new IdListDto { Ids = ids }));

2. 请求示例

URL 格式:/listById?Ids=123&Ids=456&Ids=789

额外优化建议

如果业务要求必须传入 ID 列表,可给 IdListDto 的 Ids 字段添加必填验证,避免空数组情况:

public record IdListDto : IIdListDto
{
    [Required]
    public ulong[] Ids { get; set; } = Array.Empty<ulong>();
}

内容的提问来源于stack exchange,提问作者TaCqz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:12:39