Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Emerson

MVC - Carregar dois models em uma view

Recommended Posts

Olá pessoal

A minha dúvida é a seguinte, criei duas models, Produtos e Detalhes e as duas possuem relacionamento, e montei um grid para trazer os dados de ambas as models, porém está recuperando os dados da Produtos somente.

Segue o código de como estou fazendo

Model Produto

    public class Produto
    {


        public int ProdutoID { get; set; }


        public string Nome { get; set; }


        public string  Descricao { get; set; }


        public double Preco { get; set; }


        public Detalhe Detalhe { get; set; }
    }




Model Detalhe


    public class Detalhe
    {
        public int DetalheID { get; set; }


        public string Fabricante { get; set; }


        public int anoFabricacao { get; set; }
    }




Ação do Controller


        public ActionResult Lista()
        {
            K19Context ctx = new K19Context();
            return View(ctx.Produtos);
        }




View


<table>
    <tr>
        <th>@Html.DisplayNameFor(m => m.Nome)</th>
        <th>@Html.DisplayNameFor(m => m.Descricao)</th>
        <th>@Html.DisplayNameFor(m => m.Preco)</th>
        <th>@Html.DisplayNameFor(m => m.Detalhe.Fabricante)</th>
        <th>@Html.DisplayNameFor(m => m.Detalhe.anoFabricacao)</th>
    </tr>
    @foreach(var produto in Model)
    {
        <tr>
            <th>@Html.DisplayFor(m => produto.Nome)</th>
            <th>@Html.DisplayFor(m => produto.Descricao)</th>
            <th>@Html.DisplayFor(m => produto.Preco)</th>
            <th>@Html.DisplayFor(m => produto.Detalhe.Fabricante)</th>
            <th>@Html.DisplayFor(m => produto.Detalhe.anoFabricacao)</th>
        </tr>
    }
        
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O relacionamento está sendo feito na model Produto

public class TesteContext: DbContext
{
public DbSet<Produto> Produtos { get; set; }
public DbSet<Detalhe> Detalhes { get; set; }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Criei uma tela de cadastro e esta populando as tabelas corretamente, o problema que estou tendo e em trazer esses dados para montar essa listagem com os dados das duas tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma View Model com todos os campos que você precisa, depois faz os gets necessários para recuperar esses dados, e carregue a VM e mande ela pra view.

Ou

No get de produtos, de um include no detalhes;

K19Context ctx = new K19Context();
return View(ctx.Produtos.Include(x => x.Detalhes).ToList());

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.