2017-06-14 114 views
0

我有看起来像这样的

public bool Delete([FromBody] List<int> stepIds) 

我已经安装这样

api.mySteps = {delete: $resource('my_URL_Here/api/myController?stepIds=:stepIds,{},{delete:{method:'DELETE', hasBody: true}}) }; 
我的$资源DELETE方法的WebAPI控制器传递数组

在从UI我的删除按钮的点击,我这样做:

api.mySteps.delete.delete({'stepIds':[1,2,3]}, 
           function(res){}, 
            function(err){} 
    ); 

在此设置下,我在得到我的NULL WebApi控制器。

在我的浏览器控制台上的网络选项卡上,我看到:

http://my_URL_Here/api/myController?stepIds=1,2,3

它不传递作为数组。

在小提琴手,如果我做 http://my_URL_Here/api/myController?stepIds=[1,2,3]然后它工作正常。

如何将数组传递给DELETE?

回答

0

你需要把它指定到$资源: 对于实例

'delete': {method: 'DELETE', isArray: true} 

,这里是另一个例子:

var deleteRequest = $resource('/api/delete/post', {}, { 
    'delete': {method: 'DELETE'} 
}); 
deleteRequest.delete({'ids[]':[4,5,6]}); 

那么你删除请求URL:

/api/delete/post?ids%5B%5D=1&ids%5B%5D=2&ids%5B%5D=3 
you get %5B%5D instead of [] 

和如果你期望返回数组而不是对象,那么你应该使用

'delete': {method: 'DELETE', isArray: true} 

从看你的代码,你缺少的方括号,所以这应该修复它:

api.mySteps.delete.delete({'stepIds[]':[1,2,3]}, 
           function(res){}, 
            function(err){} 
    ); 
+0

该解决方案是不是为我工作。我仍然在我的WebApi控制器中获得NULL。数据需要以这种格式传递:'http:// localhost:5903/api/myController?stepIds = [1,2,3]'。用你的方式,数据通过'http:// localhost:5903/api/myController?stepIds [] = 1&stepIds [] = 2'传递,这不是控制器所期望的 – nmess88