Usuário com melhor resposta
Retornar 2 Objetos em uma VIEW

Pergunta
-
Boa noite, pessoa tudo bem?
Estou comecando a estudar MVC 3 e gostaria de saber como posso retornar 2 objetos para a mesma view.
Usando ViewBag?
Por exemplo: Quero retornar um objeto produtos e um objeto imagems do produto, como poderia proceder em mvc para resolver este problema?
Respostas
-
Boa noite,
Nesse caso ach que o ideal era vc utilizar o pattern ViewModel no desenvolvimento. Nesse pattern você teria objetos que atenderiam necessidades especificas das suas Views, separando melhor sua camada de apresentacao da de negocio. Nesse caso você poderia ter algo assim:
//deve ir separada da classe do controller
public class ProductImagesViewModel { public Product Produto { get; set; } public List<Image> Imagens { get; set; } } public ActionResult Index() { var produto = _productRepository.GetById(1); var imagens = _productRepository.GetProductImages(produto.Id); ProductImagesViewModel model = new ProductImagesViewModel(); model.Produto = produto; model.Imagens = imagens; return View(model); }
Da uma pesquisa sobre ViewBag, Model, ViewData, sobre o pattern ViewModel, quando utiliza-los e tal..
Att,Att, Vitor Hugo Salgado
- Sugerido como Resposta C. Augusto Proiete [MVP]Moderator sexta-feira, 10 de agosto de 2012 04:10
- Marcado como Resposta RPoveda segunda-feira, 7 de janeiro de 2013 18:49
Todas as Respostas
-
RPoveda você pode sim usar ViewBag,
Controller
public ActionResult Index() { var dados = from p in EF.Products select p; ViewBag.Produtos = dados; return View(); }
View
@foreach (var item in @ViewBag.Produtos) { @item.ProductName }
att. -
Boa noite,
Nesse caso ach que o ideal era vc utilizar o pattern ViewModel no desenvolvimento. Nesse pattern você teria objetos que atenderiam necessidades especificas das suas Views, separando melhor sua camada de apresentacao da de negocio. Nesse caso você poderia ter algo assim:
//deve ir separada da classe do controller
public class ProductImagesViewModel { public Product Produto { get; set; } public List<Image> Imagens { get; set; } } public ActionResult Index() { var produto = _productRepository.GetById(1); var imagens = _productRepository.GetProductImages(produto.Id); ProductImagesViewModel model = new ProductImagesViewModel(); model.Produto = produto; model.Imagens = imagens; return View(model); }
Da uma pesquisa sobre ViewBag, Model, ViewData, sobre o pattern ViewModel, quando utiliza-los e tal..
Att,Att, Vitor Hugo Salgado
- Sugerido como Resposta C. Augusto Proiete [MVP]Moderator sexta-feira, 10 de agosto de 2012 04:10
- Marcado como Resposta RPoveda segunda-feira, 7 de janeiro de 2013 18:49
-
Veja isso aqui
http://social.msdn.microsoft.com/Forums/pt-BR/mvcpt/thread/37fa6997-2f90-4ed2-b0d1-e15026961005
Não importa ao tempo o minuto que passa, mas o minuto que vem.
- Sugerido como Resposta Filipemd_s terça-feira, 14 de agosto de 2012 17:08
-
Ola
Eu uso uma propriedade chamada HTTPPostedFileBase, ou seja eu preparo um ViewModel e minha Propriedade de Imagem (que pode ser um campo string que armazena o endereçco) eu faço retornar o HttpPostedFileBase.
Este Atributo me traz, o Nome da Image, Endereço, Tamanho, Tipo
E o Objeto (Instancia do Objeto preenchido ) eu retorno normalmente
Da uma olhada neste link do codeplex... vai te ajudar
http://mvcmusicstore.codeplex.com/releases/view/64379
http://fparmezani.wordpress.com
- Sugerido como Resposta Fernando Parmezani segunda-feira, 13 de agosto de 2012 22:36