5
respostas

Passando array para o BackEnd

Estou tentando passar um array para o BackEnd com angular, mas não está funcionando. Há algo de errado nesse código?

if (CargoIDs.length)
{
      var promise = $http.put('/Vagas/addCargosEdital?CargoIDs='+CargoIDs);
     promise.then(function (retorno) {
                    //nada!!!
      });
}
public bool addCargosEdital(List<int> CargoIDs)
 {
      return true;
}

Quando CargoIDs é igual a [6], apenas um valor, o backEnd recebe corretamente; mas quando passo [1,2,3], mais de um valor no array, CargoIDs no backend está sempre zerado(0).

Abraço...

5 respostas

Seria legal você serializar antes de mandar para o back-end passando como objetos json

Código gerador do Array:

var CargoIDs=[]
$scope.cargosEditalRestantes.map(function (cargo) {      
    CargoIDs.push(cargo.id);
});
var promise = $http.put('/Vagas/addCargosEdital?CargoIDs=' + JSON.stringify(CargoIDs));

Quando faço a serialização, continua aparecendo 0 no backend.

Ao invés de passar List tenta colocar

public bool addCargosEdital(string[] CargoIDs) { return true; }

public bool addCargosEdital(string[] CargoIDs)
 {
      return true;
}

Recebeu, mas não como o esperado, recebeu tudo como string apenas na primeira posição: [0]='1,20,35'

Agora você pode fazer um split no string quebrando por vírgula e logo terá um array depois você trabalha como quiser. Outro ponto que pode testar é no lugar de string colocar o tipo int e realizar o teste para vê se o retorno corresponde com o esperado.