Usuário com melhor resposta
Atributo tipo lista em um objeto vindo nulo

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]"]
Respostas
-
Rodrigo,
Tenta assim, é muito mais fácil e rápido:
data: $(form).serialize();
Att,
LeandroSe 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
Todas as Respostas
-
-
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 -
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.... :/
-
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
-
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
-
Rodrigo,
Tenta assim, é muito mais fácil e rápido:
data: $(form).serialize();
Att,
LeandroSe 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
-