.NET Core中WebAPI查询参数值为空问题排查
问题原因与解决方案
嘿,我一眼就看到问题所在了——你重复使用了[FromQuery]特性,导致模型绑定逻辑混乱,所以query.query才会一直是null。
具体问题分析
你在两个地方同时标注了[FromQuery]:
- 控制器方法的
SearchQuery query参数上用了[FromQuery],告诉框架要从查询字符串绑定整个复杂对象; - 又在
SearchQuery类的query属性上用了[FromQuery(Name = "query")],重复指定绑定规则。
这种重复标注会让.NET Core的模型绑定系统产生冲突,无法正确将查询参数的值映射到属性上。
两种可行的修复方案
方案一:移除参数上的[FromQuery]
因为你的属性名query和查询参数名query完全一致,框架会自动完成绑定,不需要额外标注:
[HttpGet] public IActionResult Get(SearchQuery query) { } public class SearchQuery { public string query { get; set; } }
方案二:移除模型属性上的[FromQuery]
保留参数上的[FromQuery],让框架从查询字符串绑定整个对象:
[HttpGet] public IActionResult Get([FromQuery]SearchQuery query) { } public class SearchQuery { public string query { get; set; } }
额外说明
如果你的查询参数名和属性名不一致(比如查询参数是searchText,属性名是Query),只需要在属性上单独标注[FromQuery(Name = "searchText")]即可,不需要在参数上加[FromQuery](加了也不影响,但属于冗余操作)。
内容的提问来源于stack exchange,提问作者user1060500
相关产品推荐
相关产品推荐

