2016-03-04 96 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) { 

    } 
});