2016-03-04 94 views
0

我有一个web api HttpDelete控制器方法,它接受一个I​​D数组作为参数。我想知道如何将一个ID数组传递给该方法。将内容传递给deleteasync

我试图通过与putasync和postasync类似的ID,在那里我可以对id进行json化。 DeleteAsync,似乎不接受类似于其他web api函数的json内容。下面是我HttpDelete控制器方法:

[HttpDelete] 
    [Route("delete")] 
    public HttpResponseMessage DeleteUsers(int[] ids) 
    { 
     if (ids != null) 
     { 
      ...Do stuff 
     } 

     throw error; 
    } 

我试图去使用这种方法:

var Ids = new[] { 1,2,3 }; 
    string jsonString = JsonConvert.SerializeObject(Ids); 
    var content = new StringContent(jsonString, Encoding.UTF8, _mediaType); 

    response = HttpClient.DeleteAsync(endpoint,content).Result; 

那么我怎么才能通过一些IDS的一个数组这种方法?

任何想法?

由于

回答

1

VS2012中的DeleteAsync似乎不允许发送HttpContent,但VS2013会。 See MSDN page here

所以我安装了VS2013,然后在我的VS2012项目中添加了对Microsoft.VisualStudio.Services.WebApi的引用。

我现在可以使用DeleteAsync和HttpContent。

0

HttpClient.DeleteAsync似乎不提供数据传递的过载。为什么不使用具有属性定义路由的POST方法,将数组发送到该方法,并在该特定POST方法内部执行删除逻辑?

事情也许是这样的:

[Route("api/controller/deleteObjects")] 
[HttpPost] 
public async Task DeleteObjects([FromBody]IEnumerable<int> ids) 
{ 
    // whatever mechanism you're using to delete 
} 
0
[Route("api/APIController/delete")] 
[HttpDelete] 

public async Task DeleteObjects([FromUri]int[] ids) 
{ 
    // whatever you want to do 
} 

您可以将IDS像URI参数。它为我工作。

var Ids = new[] { 1,2,3 }; 
$.ajax({ 
    method:'DELETE', 
    url: "/api/APIController/delete", 
    params: { 
     ids : Ids, 
    }, 
    //additions if you need 

    success: function(response) { 

    }, 
    error: function(xhr) { 

    } 
});