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

如何使用AngularJS$资源传递数组(执行删除操作),angularjs,asp.net-web-api,angular-resource,Angularjs,Asp.net Web Api,Angular Resource,我有一个WebAPI控制器,其DELETE方法如下 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.my

我有一个WebAPI控制器,其DELETE方法如下

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控制器将变为NULL

在浏览器控制台的“网络”选项卡中,我看到以下内容:

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

它不是作为数组传入的

在小提琴手上,如果我这样做的话
http://my_URL_Here/api/myController?stepIds=[1,2,3]
然后它就可以正常工作了


如何传递要删除的数组?

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

'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
,这是控制器不期望的