如何使用AngularJS $资源(执行删除操作)
问题描述:
我有看起来像这样的
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?
答
你需要把它指定到$资源: 对于实例
'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){}
);
该解决方案是不是为我工作。我仍然在我的WebApi控制器中获得NULL。数据需要以这种格式传递:'http:// localhost:5903/api/myController?stepIds = [1,2,3]'。用你的方式,数据通过'http:// localhost:5903/api/myController?stepIds [] = 1&stepIds [] = 2'传递,这不是控制器所期望的 – nmess88