Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Enviar array de inteiros via ajax para o controller

<script type="text/javascript">

        function clickIncremento(btn) {

            var data =
            {
                Ids: [1,22,5,200,600,784]
           };

            $.ajax({
                url: '/Pedido/UpdateQuantidade',
                type: 'POST',
                contentType: 'application/json',
                data: JSON.stringify(data)
            })
        }
    </script>

public bool UpdateQuantidade(List<int> Ids)
 {
      return true;
}

Mas Ids está Ids=0 na controladora...

4 respostas

Olá, Eduardo

Tente mudar seu código para:

public bool UpdateQuantidade([FromBody]int[] Ids)
 {
      return true;
}

A inclusão do FromBody vai resolver seu problema e se tu quiser saber mais sobre o assunto segue a URL da documentação.

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

Não funcionou, testei de várias maneiras, veja os resultados:

UpdateQuantidade([FromBody]int[] Ids)
Ids=null
UpdateQuantidade([FromBody]string[] Ids)
Ids=null
UpdateQuantidade([FromBody]List<string>Ids)
Ids=null
UpdateQuantidade(string[] Ids)
Ids={string[0]}
UpdateQuantidade(int[] Ids)
Ids={int[0]}
solução!

Resolvi, a falha era na requisição ajax..

var data =
    {
        CargoIDs: [1, 22, 5, 200, 600, 784]
    };

$.ajax({
    url: '/Pedido/UpdateQuantidade',
    type: 'POST',
    cache: false,
    data: data
})

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software