Usuário com melhor resposta
Dois models em uma única view.

Pergunta
-
Boa noite Pessoal,
Sou novato no framework MVC3, e estou tento alguns problemas.
Tenho uma viu que é a master page, _Layout.cshtml.
Nela eu carrego uma lista, Contadores.cs.
Por causa disso, toda View que eu chamo, eu preciso passar essa lista, para que o Model funcione corretamente.
public ActionResult Index() { List<Contadores> ltContadores = BDContadores.objDados.getAll(); return View("Home", ltContadores); }
O meu problema é quando eu preciso passar uma outra lista além dessa.
Ele me retorna um erro dizendo que só um Model pode ser carregado por View.
É possível passar múltiplos Models para uma única View?
Obrigado
Respostas
-
Crie uma action separada e use @{RenderAction()} para reutilizar um model em várias views ou mesmo na Master Page.
- Marcado como Resposta Alexandre Maeda terça-feira, 25 de setembro de 2012 12:50
-
Porque você não deixa cada model em uma partialview diferente?
Depois é só renderizar cada partial na master. é que o meu blog post com os detalhes de como se faz foi apagado, mas eu ainda tenho o exemplo pronto aqui, ó: https://skydrive.live.com/redir?resid=D772A349D58A380B!345
Sou só uma little padawan que tem sorte de andar com jedis, mas farei o possível por quem precisar :)
Se precisar: @MayogaX- Editado Priscila Mayumi Sato terça-feira, 25 de setembro de 2012 11:48 Passar o link como link e não texto
- Marcado como Resposta Alexandre Maeda terça-feira, 25 de setembro de 2012 12:50
-
Mas foi como eu disse, vc só pode ter um model por view. No caso tenha duas partialviews ou se for muito necessário vai precisar rever a modelagem das suas models para ver se uma lista não contém outra.
Sou só uma little padawan que tem sorte de andar com jedis, mas farei o possível por quem precisar :)
Se precisar: @MayogaX- Marcado como Resposta Alexandre Maeda terça-feira, 25 de setembro de 2012 14:00
-
Nesse caso voce pode passar os dois objetos para a view usando ViewData ou ViewBag.
Tudo que eh feito numa view convencional pode ser feito numa view utilizada com o RenderAction, outra alternativa eh criar um view model com suas listas, preencher e passar para a view em questao.
- Marcado como Resposta Alexandre Maeda terça-feira, 25 de setembro de 2012 14:00
Todas as Respostas
-
Crie uma action separada e use @{RenderAction()} para reutilizar um model em várias views ou mesmo na Master Page.
- Marcado como Resposta Alexandre Maeda terça-feira, 25 de setembro de 2012 12:50
-
Porque você não deixa cada model em uma partialview diferente?
Depois é só renderizar cada partial na master. é que o meu blog post com os detalhes de como se faz foi apagado, mas eu ainda tenho o exemplo pronto aqui, ó: https://skydrive.live.com/redir?resid=D772A349D58A380B!345
Sou só uma little padawan que tem sorte de andar com jedis, mas farei o possível por quem precisar :)
Se precisar: @MayogaX- Editado Priscila Mayumi Sato terça-feira, 25 de setembro de 2012 11:48 Passar o link como link e não texto
- Marcado como Resposta Alexandre Maeda terça-feira, 25 de setembro de 2012 12:50
-
-
Mas foi como eu disse, vc só pode ter um model por view. No caso tenha duas partialviews ou se for muito necessário vai precisar rever a modelagem das suas models para ver se uma lista não contém outra.
Sou só uma little padawan que tem sorte de andar com jedis, mas farei o possível por quem precisar :)
Se precisar: @MayogaX- Marcado como Resposta Alexandre Maeda terça-feira, 25 de setembro de 2012 14:00
-
Nesse caso voce pode passar os dois objetos para a view usando ViewData ou ViewBag.
Tudo que eh feito numa view convencional pode ser feito numa view utilizada com o RenderAction, outra alternativa eh criar um view model com suas listas, preencher e passar para a view em questao.
- Marcado como Resposta Alexandre Maeda terça-feira, 25 de setembro de 2012 14:00
-
-
João_ Prado,
Consegui utilizando o ViewData.
//HomeController public ActionResult Teste() { ViewData["Contadores"] = BDContadores.objDados.getAll(); List<Equipe> ltEquipe = BDEquipe.objDados.getAll(); return View("Teste", ltEquipe); } //View Master Page @foreach ( var item in (List<Contadores>)ViewData["Contadores"]) { ... }
Em toda nova Action, eu só preciso inserir o ViewData.
Obrigado Cara!
Um abraço. -
Concordo,
ViewData e tudo deve se resolver...
http://fparmezani.wordpress.com
- Sugerido como Resposta Fernando Parmezani domingo, 30 de setembro de 2012 22:06
- Não Sugerido como Resposta João_ PradoModerator segunda-feira, 1 de outubro de 2012 21:56
-
Caro Fernando,
Ao sugerir seu próprio post como resposta você está violando as regras do fórum.
É aceito que você mesmo responda sua pergunta apresentando a solução para o problema levantado mas não da maneira como você procedeu Ok?