none
Retornar 2 Objetos em uma VIEW RRS feed

  • 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?

    quinta-feira, 9 de agosto de 2012 23:35

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

    sexta-feira, 10 de agosto de 2012 03:37

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.
    sexta-feira, 10 de agosto de 2012 02:08
    Moderador
  • 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

    sexta-feira, 10 de agosto de 2012 03:37
  • 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
    sexta-feira, 10 de agosto de 2012 16:54
  • 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

    segunda-feira, 13 de agosto de 2012 22:36