6

我有以下内容:

    [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 }
            );
4

2 回答 2

13

没关系,我发现了这个:

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

于 2013-07-22T02:40:29.213 回答
0

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

如何使用 Web API 中的属性路由通过 URI 发送数组?

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

string idsAsString = actionContext.Request.GetRouteData().Values["id"].ToString();
于 2013-07-22T23:41:37.703 回答