【发布时间】:2014-04-27 06:07:33
【问题描述】:
这是我的api controller 方法,用于获取按用户 ID 过滤的项目列表。
public IEnumerable<MyItemListItemDTO> Get(int userId)
当从客户端调用方法时,为什么/MyItems/Get/11 不起作用而/MyItems/Get?userId=11 起作用?
【问题讨论】:
标签: asp.net-web-api
这是我的api controller 方法,用于获取按用户 ID 过滤的项目列表。
public IEnumerable<MyItemListItemDTO> Get(int userId)
当从客户端调用方法时,为什么/MyItems/Get/11 不起作用而/MyItems/Get?userId=11 起作用?
【问题讨论】:
标签: asp.net-web-api
因为在参数化 URL 上,参数名称是 id 而不是 userId。模型绑定器检查参数的名称以进行绑定。查看路由定义,您会看到。
我的意思是,基本上是在RouteConfig.cs 文件中,默认路由如下:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
看看URL是controller/action/id,最后一个参数的名字是id。因此,在某些操作中,要接收那段 URL,您必须匹配参数的名称。
【讨论】: