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

EF Core Web API按FirstName查询时参数为null问题排查

问题原因与解决方法

问题根源

你的第二个Get方法存在参数绑定不明确的问题:

  • 方法标记了[HttpGet("FirstName")],但路由模板里没有包含name参数的占位符;
  • 同时也没有给name参数指定绑定来源(比如查询字符串、路由),ASP.NET Core无法自动识别参数值的来源,导致name始终为null。

解决方法

方法1:将参数嵌入路由路径

修改路由特性,把name作为路由的一部分,请求时直接在URL路径中传递参数:

[HttpGet("FirstName/{name}")]
public IList<User> Get(string name)
{
    var urunler = from Users in myDbContext.Users where Users.FirstName == name select Users;
    return urunler.ToList();
}

调用示例:GET /api/[你的控制器名称]/FirstName/张三

方法2:从查询字符串绑定参数

如果希望通过?name=xxx的查询字符串形式传递参数,给name参数添加[FromQuery]特性明确绑定来源:

[HttpGet("FirstName")]
public IList<User> Get([FromQuery] string name)
{
    var urunler = from Users in myDbContext.Users where Users.FirstName == name select Users;
    return urunler.ToList();
}

调用示例:GET /api/[你的控制器名称]/FirstName?name=张三

额外注意事项

两个Get方法的路由存在歧义风险:当调用无参数的GET请求时,ASP.NET Core可能无法区分哪个方法应该响应。建议给第一个获取全部用户的方法指定明确路由,比如:

[HttpGet("All")]
public IList<User> GetAll()
{
    return myDbContext.Users.ToList();
}

内容的提问来源于stack exchange,提问作者Oğulcan Ocaklı

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:54:20