View 3 Models in a View

Asked

Viewed 122 times

1

I have 3 Models and I need to assemble 2 (two) lists and a "Save) button":

inserir a descrição da imagem aqui

Class: Tbproduct:

public class TBProduto
{
    [Key]
    public int TBPRODUTOID { get; set; }      
    public string DSPRODUTO { get; set; }
    public virtual ICollection<TBProdutoFornecedor> TBProdutoFornecedor { get; set; }

} 

Tbfornecedor class:

public TBFornecedor()
    [Key]
    public int TBFORNECEDORID { get; set; }
    public string NMFORNECEDOR { get; set; }
    public virtual ICollection<TBProdutoFornecedor> TBProdutoFornecedor { get; set; }

Class Tbproductofornecedor:

public class TBProdutoFornecedor
{
    [Key]
    public int TBPRODUTOTBFORNECEDORID { get; set; }
    public int TBPRODUTOID { get; set; }
    public int TBFORNECEDORID { get; set; }
    public DateTime DTPRODUTOFORNECEDOR { get; set; }
    public virtual TBProduto Produtos { get; set; }
    public virtual TBFornecedor Fornecedores { get; set; }
}

Controler:

 public class ProdutoFornecedorController : Controller
{
     private IProdutoFornecedor _IRepositorio;

    public ProdutoFornecedorController()
        : this(new ProdutoFornecedorRepositorio())
    { 
    }

    public ProdutoFornecedorController(IProdutoFornecedor repositorio)
    {
        _IRepositorio = repositorio;
    }

    public ActionResult Index()
    {
        return View();
    }
}

Partialview - Product

@model IEnumerable<Lamar.Dominio.Entidade.TBProduto>
<select id="produto">
<option value="">Selecione um item</option>
@foreach (var item in Model)
{
    <option value="@item.CODPRODUTO">@item.DSPRODUTO</option>
}

Partialview - Supplier

@model IEnumerable<Lamar.Dominio.Entidade.TBFornecedor>
<select id="Selfornecedor">
<option value="">Selecione um item</option>
@foreach (var item in Model)
{
    <option value="@item.CODFORNECEDOR">@item.NMFORNECEDOR</option>
}

View Index

@model IEnumerable<Lamar.Dominio.Entidade.TBProdutoFornecedor>
@{
ViewBag.Title = "Index";
Layout = "~/Areas/Administrativo/Views/Shared/_AdministrativoLayout.cshtml";

}

<h2>Index</h2>
<div class="row">
<div class="form-group">
    <div class="col-md-2">FORNECEDOR</div><div class="col-md-2">@Html.Partial("_produto")</div>
    <div class="col-md-2">FORNECEDOR</div><div class="col-md-2">@Html.Partial("_fornecedor")</div>
</div>
<br />
<div class="form-group">
    <div class="col-md-6"><button type="button" class="btn btn-info" id="btn" value="">GRAVAR</button></div><div class="col-md-6"></div>
</div>

I created the lists of Supplier and Product through Partialview in the folder Shared.

The problem is that the lists always return null, I do not know if I skipped any step when creating these Views. In the database has registered Products and Suppliers and even returns null.

1 answer

2


You didn’t pass the Models of possibilities in Partials. It won’t work like this:

<div class="form-group">
    <div class="col-md-2">FORNECEDOR</div><div class="col-md-2">@Html.Partial("_produto")</div>
    <div class="col-md-2">FORNECEDOR</div><div class="col-md-2">@Html.Partial("_fornecedor")</div>
</div>

The right thing would be for you to carry all the possibilities of customers and suppliers on Action Index:

public ActionResult Index()
{
    ViewBag.ProdutosPossiveis = contexto.Produtos.ToList();
    ViewBag.FornecedoresPossiveis = contexto.Fornecedores.ToList();
    return View();
}

And then wear it like this:

<div class="form-group">
    <div class="col-md-2">FORNECEDOR</div><div class="col-md-2">@Html.Partial("_produto", (IEnumerable<Produto>)ViewBag.ProdutosPossiveis)</div>
    <div class="col-md-2">FORNECEDOR</div><div class="col-md-2">@Html.Partial("_fornecedor", (IEnumerable<Fornecedor>)ViewBag.FornecedoresPossiveis)</div>
</div>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.