Controller receiving parameter array as null

Asked

Viewed 294 times

1

I’m making an AJAX request, but I can’t pass array...

My controller is like this:

[Route("imoveis/BuscaDados/Json/Listas/ListaQuartos")]
    public JsonResult ListaQuartos(int idEstado, int idCidade, int[] idsBairros, int[] idStatus)
    {
        RealizaBuscaListas.BuscaNumQuartos(idEstado, idCidade, idsBairros.ToList(), IdsStatus);
        return Json(RealizaBuscaListas.ListaDeQuartos, JsonRequestBehavior.AllowGet);
    }

And my javascript function like this:

function preencheQuartos(Destino) {
var idEstado = 0;
var idCidade = 0;
var idsBairros = [];
idsBairros[0] = 1
idsBairros[1] = 2
var idStatus = [0];
Url = baseUrl + "imoveis/BuscaDados/Json/Listas/ListaQuartos/";
$.ajax({
    method: "GET",
    url: Url,
    data: { idEstado: idEstado, idCidade: idCidade, idsBairros: idsBairros, idStatus: idStatus },
    success: function (data) {
        $.each(data, function (i, quarto) {
            Faz coisas...
        });
    },
    error: function (data) {
        alert("Falha! Não foi possível retornar os números de quartos, tente novamente.");
    }
});
}

But when inspecting the action, I realize that the parameters int[] idsBairros and int[] idStatus always arrive null. Will I have to assemble the entire url with a looping for each arrays item?

  • Have you tried changing the type of the parameter only for testing? Try switching to Object and see if it sends right. Or try to drop a stringfy into the array before sending...

1 answer

1


I was able to solve it by adding Traditional:true,

$.ajax({
    method: "GET",
    url: Url,
    traditional:true,
    data: { idEstado: idEstado, idCidade: idCidade, idsBairros: idsBairros, idStatus: idStatus },

Browser other questions tagged

You are not signed in. Login or sign up in order to post.