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

ASP Net Core 2 API使用[FromQuery]无法绑定参数问题排查

问题分析与解决

嘿,我来帮你排查这个参数绑定失败的问题!核心是两处细节出错了:

1. 路由模板的写法混淆了路由参数与查询字符串

你在[HttpGet]特性里写的"{page}&{pageSize}&{predicate}",是在定义路由路径参数——也就是URL路径分段(比如/api/buildings/1/10/fr这种格式),但你实际要使用的是查询字符串参数(?page=1&pageSize=10这种格式)。

ASP.NET Core里,查询字符串参数不需要在路由模板里声明,只要在Action参数上标记[FromQuery],框架就会自动从URL的查询部分绑定这些参数。所以你需要把路由模板里的这些参数移除,只保留固定的路由路径(如果控制器已经有[Route("api/[controller]")]特性,那Action的[HttpGet]可以不用加额外路径)。

2. 测试URL缺少查询字符串的起始标记

你提供的测试URL是:

http://localhost:51232/api/buildings/page=1&pageSize=10&predicate=fr

这里的问题是没有加查询字符串的起始符?,导致page=1被当成了路径的一部分,而不是查询参数。正确的格式应该是:

http://localhost:51232/api/buildings?page=1&pageSize=10&predicate=fr

修正后的代码

把Action的路由特性调整为:

[HttpGet(Name = "GetBuildingsBySearchCriteria")]
public IActionResult GetBuildingsBySearchCriteria(
    [FromHeader] string idUser, 
    [FromQuery] int page, 
    [FromQuery] int pageSize, 
    [FromQuery] string predicate)
{
    // 你的业务逻辑代码
}

这样修改后,用正确的URL测试,就能正常接收到page、pageSize和predicate这三个查询参数了,请求头里的idUser也能正常绑定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:42:05