如何使用AngularJS$资源传递数组(执行删除操作)
我有一个WebAPI控制器,其DELETE方法如下如何使用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
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
,这是控制器不期望的