我有一个web api HttpDelete控制器方法,它接受一组id作为参数。我想知道如何将一组id传递给方法。
我试图传递类似于putasync和postasync的id,在那里我可以jsonify ids。 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;
那么如何将多个id作为数组传递给此方法?
有什么想法吗?
由于
答案 0 :(得分:1)
VS2012中的DeleteAsync似乎不允许发送HttpContent,但是VS2013会发送。 See MSDN page here
所以我安装了VS2013,然后在我的VS2012项目中添加了对Microsoft.VisualStudio.Services.WebApi的引用。
我现在可以使用DeleteAsync和HttpContent。
答案 1 :(得分: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
}
答案 2 :(得分:0)
[Route("api/APIController/delete")]
[HttpDelete]
public async Task DeleteObjects([FromUri]int[] ids)
{
// whatever you want to do
}
您可以从uri发送类似参数的ID。它对我有用。
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) {
}
});