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

ASP.NET Core 2.0更新Web API无法接收ID参数问题求助

解决ASP.NET Core 2.0控制器无法接收ID参数的问题

嘿,我来帮你排查这个ID参数传不进去的问题!看了你的控制器代码,问题出在路由模板的配置上,咱们一步步来解决:

问题根源

你同时使用了[HttpPut("{id}")]和[Route("api/ShoppingCart/UpdateShoppingCartItem")]两个特性,但这两个特性的路由模板没有正确结合,导致ASP.NET Core无法从请求中找到ID参数的来源。

具体来说,[Route]特性定义了固定的路径api/ShoppingCart/UpdateShoppingCartItem,而[HttpPut("{id}")]的{id}模板并没有被整合到最终的路由路径里,或者你在Postman里的请求URL没有匹配正确的路由格式。

解决方案

这里有两种常用的修复方式,选一种适合你的就行:

方式一:修改Route特性,加入ID参数

直接在[Route]的路径里加上{id},让路由模板明确包含ID参数:

public class ShoppingCartController : BaseController 
{ 
    [HttpPut]
    [Route("api/ShoppingCart/UpdateShoppingCartItem/{id}")] 
    public IActionResult UpdateShoppingCartItem(long id) 
    { 
        return new NoContentResult(); 
    } 
}

Postman请求方式:

  • 请求方法选择PUT
  • 请求URL填写:http://你的域名/api/ShoppingCart/UpdateShoppingCartItem/123(把123换成实际的ID值)

方式二:利用控制器路由前缀简化配置

如果你的控制器类上已经添加了[Route("api/[controller]")](这是ASP.NET Core的常用写法),可以简化方法上的路由配置:

[Route("api/[controller]")]
public class ShoppingCartController : BaseController 
{ 
    [HttpPut("UpdateShoppingCartItem/{id}")]
    public IActionResult UpdateShoppingCartItem(long id) 
    { 
        return new NoContentResult(); 
    } 
}

Postman请求方式和方式一一样,URL还是http://你的域名/api/ShoppingCart/UpdateShoppingCartItem/123。

额外提醒

  • 确保Postman的请求方法是PUT,和控制器上的[HttpPut]匹配
  • 如果你的ID参数不是从路由传递,而是想从请求体或查询字符串获取,需要给参数加上特性标记:
    • 从查询字符串获取:public IActionResult UpdateShoppingCartItem([FromQuery] long id),此时URL是api/ShoppingCart/UpdateShoppingCartItem?id=123
    • 从请求体获取:public IActionResult UpdateShoppingCartItem([FromBody] long id),此时需要在Postman的Body里传入ID值(一般用JSON格式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:23:39