如何使用AngularJS $资源传递数组(执行DELETE操作)

时间:2017-06-14 23:03:34

标签: angularjs asp.net-web-api angular-resource

我有一个带有DELETE方法的WebAPI控制器,看起来像这样

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

我已经设置了我的$资源

api.mySteps = {delete: $resource('my_URL_Here/api/myController?stepIds=:stepIds,{},{delete:{method:'DELETE', hasBody: true}}) };

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

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

使用此设置,我在WebApi Controller中获取NULL。

在浏览器控制台的“网络”标签中,我看到了:

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

它不是作为数组传入的。

如果我这样做,请给小提琴手 http://my_URL_Here/api/myController?stepIds=[1,2,3]然后就可以了。

如何将数组传递给DELETE?

1 个答案:

答案 0 :(得分:0)

您需要将其指定为$ resource: 例如

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

这是另一个例子:

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

然后删除请求网址:

/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){} 
    );