How to insert an information of a model that has a Relationship?

2

I have a list of Products and this listing has the vendor code, I need to enter the vendor name in that listing.

My Controller:

  public ActionResult Index()
    {
        IEnumerable<Produto> produtos = db.Produto
                                           .Include(p => p.Fornecedor)
                                           .Where(p => p.Ativo == true)
                                           .ToList();

        return View(produtos);

    }

My View

<table class="table table-striped table-responsive">
<tr>
    <th>
        Código
    </th>
    <th>
        Código do Fornecedor
    </th>
    <th>
       @* A informação há ser inserida *@
       Nome Fantasia
    </th>
    <th>
        Descricão
    </th>
    <th>
        Preco de Venda
    </th>
    <th>
        Quantidade
    </th>
    <th>
        Opções
    </th>
</tr>

@foreach (var produto in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => produto.Codigo)
        </td>
        <td>
            @Html.DisplayFor(modelItem => produto.CodigoFornecedor)
        </td>
        <td>
            @Html.DisplayFor(modelItem => produto.Descricao)
        </td>
        <td>
            @Html.DisplayFor(modelItem => produto.PrecoVenda)
        </td>
        <td>
            @Html.DisplayFor(modelItem => produto.Quantidade)
        </td>

        <td>
            <button class="btn btn-default details" data-id="@produto.Codigo"><i class="glyphicon glyphicon-file"></i></button>
            <button class="btn btn-danger delete" data-id="@produto.Codigo"><i class="glyphicon glyphicon-trash"></i></button>
            <button class="btn btn-primary edit" data-id="@produto.Codigo"><i class="glyphicon glyphicon-edit"></i></button>
        <td>
    </tr>
}

    
asked by anonymous 03.12.2015 / 20:08

1 answer

2

This case does not need a ViewModel . You can only use the Model of Produto .

Let's first take this try... catch which is not needed in ASP.NET MVC. Then let's simplify your Where ( f => f.Ativo == true and f => f.Ativo is the same thing):

public ActionResult Index()
{
    IEnumerable<Produto> produtos = db.Produto
                                      .Include(s => s.Fornecedores)
                                      .Where(s => s.Ativo)
                                      .ToList();

    return View(produtos);
}

In View , use the following form:

@foreach (var produto in Model)
{
    foreach (var fornecedor in produto.Fornecedores)
    {
        <div>@fornecedor.Nome</div>
    }
}

EDIT

Now that you've posted the View , upgrade to:

<table class="table table-striped table-responsive">
<tr>
    <th>
        Código
    </th>
    <th>
        Código do Fornecedor
    </th>
    <th>
        Nome do Fornecedor
    </th>
    <th>
       @* A informação há ser inserida *@
       Nome Fantasia
    </th>
    <th>
        Descricão
    </th>
    <th>
        Preco de Venda
    </th>
    <th>
        Quantidade
    </th>
    <th>
        Opções
    </th>
</tr>

@foreach (var produto in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => produto.Codigo)
        </td>
        <td>
            @Html.DisplayFor(modelItem => produto.CodigoFornecedor)
        </td>
        <td>
            @Html.DisplayFor(modelItem => produto.Fornecedor.Nome)
        </td>
        <td>
            @Html.DisplayFor(modelItem => produto.Descricao)
        </td>
        <td>
            @Html.DisplayFor(modelItem => produto.PrecoVenda)
        </td>
        <td>
            @Html.DisplayFor(modelItem => produto.Quantidade)
        </td>

        <td>
            <button class="btn btn-default details" data-id="@produto.Codigo"><i class="glyphicon glyphicon-file"></i></button>
            <button class="btn btn-danger delete" data-id="@produto.Codigo"><i class="glyphicon glyphicon-trash"></i></button>
            <button class="btn btn-primary edit" data-id="@produto.Codigo"><i class="glyphicon glyphicon-edit"></i></button>
        <td>
    </tr>
}
    
03.12.2015 / 20:15