How to insert information from a model that has a Relationship?

Asked

Viewed 92 times

2

I have a listing of Products and this listing has the supplier code, I need to enter the name of the supplier in this 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>
}

1 answer

1


This case of yours doesn’t need a Viewmodel. You can use only the Model of Produto.

Let’s take this one out first try... catch that is not required in ASP.NET MVC. Then we will 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 the View, use as follows:

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

EDIT

Now that you 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>
}
  • Thanks, simplifying so became much easier, I just did not understand how it will be View, I will update my question with my view for you help me and also because my question took a different path.

  • @J.C.Galhardi See if you agree.

  • 1

    Simple and objective. Mine helped a lot.

Browser other questions tagged

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