Asp.net web api 在Web API Get方法上传递参数

Asp.net web api 在Web API Get方法上传递参数,asp.net-web-api,Asp.net Web Api,这是我的api控制器方法,用于获取由用户id过滤的项目列表 public IEnumerable<MyItemListItemDTO> Get(int userId) public IEnumerable Get(int-userId) 从客户端调用方法时,为什么/MyItems/Get/11不起作用,而/MyItems/Get?userId=11起作用?因为在参数化URL上,参数的名称是id,而不是userId。模型绑定器检查参数的名称以进行绑定。查看路线定义,您将看到这一点

这是我的
api控制器
方法,用于获取由用户id过滤的项目列表

public IEnumerable<MyItemListItemDTO> Get(int userId)
public IEnumerable Get(int-userId)

从客户端调用方法时,为什么
/MyItems/Get/11
不起作用,而
/MyItems/Get?userId=11
起作用?

因为在参数化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片段,必须匹配参数的名称