none
Atributo tipo lista em um objeto vindo nulo RRS feed

  • Pergunta

  • Boa tarde, bom, quando vem meu objeto a lista vem null, sempre, até hoje não achei o solução, sempre faço uma gambi pra funcionar pegando com Request.Param os valores...

    javascript 

    model.Contato = grid.getFocusedValues(); //aqui um array, {Id, name}
                        fn.Loading.show();
                        $.ajax({
                            type: 'POST',
                            data: model,
                            url: '@Url.Content("~/Pessoa/Save")',

    model é um objeto do tipo pessoa, aonde minha classe está assim, e possui um IList do tipo Contato...

           public virtual string Nome { get; set; }
            public virtual IList<Contato> Contato { get; set; }

    e minha action está assim 

     public JsonResult Save(Pessoa model)
    {

    Usando console.debug(model,"model"); eu verifico e está lá em minha lista, ok

    porém ao chegar na minha action, fica tudo nulo :\

    Então tenho que pegar sempre com Resquest.Param["Contato[Id]"] 


    quinta-feira, 25 de abril de 2013 19:35

Respostas

  • Rodrigo,

    Tenta assim, é muito mais fácil e rápido:

    data: $(form).serialize();


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    • Sugerido como Resposta Leandro Tozetto quinta-feira, 25 de abril de 2013 23:11
    • Marcado como Resposta RodrigoCez segunda-feira, 6 de maio de 2013 16:49
    quinta-feira, 25 de abril de 2013 23:11

Todas as Respostas

  • Você está esperando no Action um objeto do tipo Pessoa, mas está passando um objeto do tipo Contato

    Não esqueça de marcar o post como útil caso tenha te ajudado.

    quinta-feira, 25 de abril de 2013 19:50
  • RodrigoCez boa tarde normalmente quando passamos valores via JSON para as Actions sua estrutura de dados deve ser assim :

    var Dados = '{ id : 1 , nome : teste }';

    Acima é só um exemplo porém é desse jeito com as aspas e as chaves para entender que o que vai passar é JSON  assim a Action entenderá perfeitamente como serializar o id e nome em uma classe Pessoa por exemplo tendo a as proprieades de mesmo nome ou seja Id e Nome.

    Veja como está a string da sua função : grid.getFocusedValues();

    Espero ter ajudado.


    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    quinta-feira, 25 de abril de 2013 19:53
  • Então Davi, usando $.toJSON()

    minha lista é retornada assim 

    [{"Id":1,"Nome":"Fulano","Telefone":"00000","Celular":"00000"},

    E mesmo assim não está reconhecendo

    sendo que o meu IList<Contato> Contato

    há todos esses parametros passado.

    Na minha action informa que eu tenho a lista, entretanto todos os campos estão nulos.... :/



    quinta-feira, 25 de abril de 2013 20:02
  • Mesmo assim  não use o toJSON() e faça no braço a string como no exemplo que lhe passei algo como :

    var Dados = '{ Id :"'+ $("#Id").val() + '", Nome : "' + $("#Nome").val() +'" } ';

    Irá ficar uma Tripa enorme , mas faça isso e veja se irá dar certo.


    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br


    • Editado Davi Murilo quinta-feira, 25 de abril de 2013 20:05
    quinta-feira, 25 de abril de 2013 20:05
  • você pode passar sim '[]', até porque pelo que vi você pode passar n contatos. O problema está nos parâmetros do Action Save

    seu json está da forma que você passou acima, pois não está fechando '[' e ainda tem ','.

    Davi Murilo ele está retornando dados de uma linha do grid, portanto ele não vai conseguir usar da forma tradicional.

    Acho que o problema está no grid.getFocusedValues();
    tens como verificar o que está retornando nisso?



    Não esqueça de marcar o post como útil caso tenha te ajudado.

    • Sugerido como Resposta Leandro Tozetto quinta-feira, 25 de abril de 2013 23:10
    quinta-feira, 25 de abril de 2013 20:15
  • Rodrigo,

    Tenta assim, é muito mais fácil e rápido:

    data: $(form).serialize();


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    • Sugerido como Resposta Leandro Tozetto quinta-feira, 25 de abril de 2013 23:11
    • Marcado como Resposta RodrigoCez segunda-feira, 6 de maio de 2013 16:49
    quinta-feira, 25 de abril de 2013 23:11
  • Não funcionou :\, mas já resolvi, mandei a lista serializada, mas não na lista do objeto que está na minha classe...

    Aproveitando o tópico, é uma boa prática criar lista de objetos dentro de outros objetos? 

    sábado, 27 de abril de 2013 02:04