在Web API Get方法上传递参数

时间:2014-04-26 22:03:56

标签: asp.net-web-api

这是我的api controller方法,用于获取按用户ID过滤的项目列表。

public IEnumerable<MyItemListItemDTO> Get(int userId)

从客户端调用该方法时,为什么/MyItems/Get/11无法工作而/MyItems/Get?userId=11无效?

1 个答案:

答案 0 :(得分:1)

因为在参数化网址上,参数的名称是id而不是userId。模型绑定器检查参数的名称以进行绑定。查看路线定义,您将看到。

我的意思是,基本上是RouteConfig.cs文件中你有以下默认路由:

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

查看网址为controller/action/id,最后一个参数的名称为id。因此,在某些操作中,要接收该段URL,您必须匹配参数的名称。