将URL数组中的整数数组传递给Web API方法?

时间:2013-07-22 02:35:50

标签: ajax json asp.net-web-api

我有以下内容:

    [HttpDelete]
    public HttpResponseMessage DeleteFolder(int[] ids)
    {

我试图用这个:

DELETE http://localhost:24144/api/folder/1483;
DELETE http://localhost:24144/api/folder/[1483]

但是这些在delete方法中都是null - 如何在不将数据放入正文的情况下发送数据(因为这是DELETE请求)?

我的路由有这个:

            routes.MapHttpRoute(
           name: "Folder",
           routeTemplate: "api/folder/{id}",
           defaults: new { controller = "Folder", id = RouteParameter.Optional }
            );

2 个答案:

答案 0 :(得分:12)

没关系,我发现了这个:

http://blog.codelab.co.nz/2012/10/16/passing-arrays-into-asp-net-web-api-as-parameters/

无法在SO上找到答案,所以我会留在这里。

从以上链接页面中摘录:

[HttpGet()]
public HttpResponseMessage FindByMembers([FromUri]Int32[] ids = null)
{
   //Do stuff
    return Request.CreateResponseMessage(HttpStatusCode.OK);
}
  

网址将为http://mywebsite/api/mycontroller/findbymembers/?ids=1&ids=2&ids=3

答案 1 :(得分:0)

如果你想要像api/folder/[1,2,3]这样的Uri,也可以在这里使用下面帖子答案中提到的相同参数绑定示例:

How to send an array via a URI using Attribute Routing in Web API?

注意:您需要更改以下行以查找“id”路由变量而不是“ids”,因为此处的路由模板为“api / folder / {id}”。< / p>

string idsAsString = actionContext.Request.GetRouteData().Values["id"].ToString();