我有以下代码。为什么我不能直接将数组或列表作为参数?它可以在下面的类中使用数组或列表工作正常。
请求有效负载:
{"ids":[1,2,4]}
角:
send: {
method: 'POST',
url: controllerPath + '/send',
isArray: true
}
agreementResource.send({ ids: vm.agreementIds }).$promise.then(function (data) {
});
C#:
//Works
[HttpPost]
[Route("send")]
[Authorize(Roles = "Admin")]
public IHttpActionResult Send(AgreementIdsViewModel ids)
{
foreach (var id in ids.Ids)
{
}
}
//Does not work
[HttpPost]
[Route("send")]
[Authorize(Roles = "Admin")]
public IHttpActionResult Send(int[] ids)
{
foreach (var id in ids)
{
}
}
public class AgreementIdsViewModel
{
public int[] Ids { get; set; }
}
我知道可以通过GET请求完成,所以我认为应该可以。
GetSend([FromUri] int[] ids)
并发送请求:
/Send?ids=1&ids=2&ids=3
答案 0 :(得分:0)
请遵循以下内容:
角度服务:
send: {
method: 'POST',
url: controllerPath + '/send',
}
您的有效负载中存在一个大问题。它应该如下所示:
[1,2,3,4]
不添加ID。如果你想这样做,你可以使用lodash或下划线,如下所示:
var ids = [];
_.map(file, function (item, index) {
ids.push(item.name);
});
您的网站Api没有任何问题,这是正确的:
[HttpPost]
[Route("send")]
[Authorize(Roles = "Admin")]
public IHttpActionResult Send(int[] ids)
{
foreach (var id in ids)
{
}
}
您将调用服务的角度控制器如下所示:
agreementResource.send({ ids }).$promise.then(function (data) {}
告诉我它是否适合您。