ASP .NET Core - Usando o EF Core em um projeto separado - III

 Neste artigo vou mostrar como usar e configurar o EF Core em um projeto separado na criação de uma aplicação ASP .NET Core MVC.

Continuando o artigo anterior vamos concluir a implementação criando o controlador e a view no projeto MVC.

Configurando o projeto MVC

Abrindo o projeto Receitas.Mvc clique com o botão direito do mouse sobre a pasta Controllers e clique em
Add->Controller;

A seguir selecione a opção MVC Controller - Empty e informe o nome ReceitasController;

A seguir inclua o código abaixo neste arquivo:

using Microsoft.AspNetCore.Mvc;
using Receitas.Application.Interfaces;
using Receitas.Application.ViewModels;
namespace Receitas.Mvc.Controllers
{
    public class ReceitasController : Controller
    {
        private IReceitaService _receitaService;
        public ReceitasController(IReceitaService receitaService)
        {
            _receitaService = receitaService;
        }

        public IActionResult Index()
        {
            ReceitaViewModel model = _receitaService.GetReceitas();
            return View(model);
        }
    }
}

Observe que temos um controlador bem enxuto e limpo graças à separação das responsabilidades em nossos projetos.

Estamos injetando uma instância do serviço e no método Action Index usando esta instância para obter as receitas do banco de dados usando a view model ReceitaViewModel.

A seguir passamos a ReceitaViewModel para nossa view que iremos criar a seguir.

Para criar a view clique com o botão direito sobre o método Action Index no controlador ReceitasController e selecione Add View;

Na janela a seguir selecione - Razor View - Empty e clique em Add;

Será criado o arquivo Index.cshtml na pasta /Views/Receitas. Inclua o código abaixo neste arquivo:

@model Receitas.Application.ViewModels.ReceitaViewModel
<table id="receita" class="table table-bordered table-hover">
    <thead>
        <tr class="">
            <th>Nome</th>
            <th>Ingredientes</th>
            <th>Preparo</th>
            <th>Tempo (min.)</th>
            <th>Rendimento</th>
            <th>Foto</th>
        </tr>
    </thead>
    <tbody>
        @foreach(var receita in Model.Receitas)
        {
        <tr style="height: 50px;">
            <td>@receita.Nome</td>
            <td>@receita.Ingredientes</td>
            <td>@receita.Preparo</td>
            <td>@receita.Tempo</td>
            <td>@receita.Rendimento</td>
            <td><img src="~/images/@receita.Imagem" /></td>
        </tr>
        }
    </tbody>
</table>

Para exibir as imagens vamos criar a pasta images dentro da pasta wwwroot e incluir nesta pasta as imagens : pudimleite.jpg e bolochocolate.jpg.

A seguir inclua o código abaixo no arquivo _Layout.cshtml na pasta Views/Shared:

<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
      <ul class="navbar-nav flex-grow-1">
             <li class="nav-item">
                     <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
              </li>
               <li class="nav-item">
                      <a class="nav-link text-dark" asp-area="" asp-controller="Receitas" asp-action="Index">Receitas</a>
                 </li>

        </ul>
 </div>

Agora é só alegria...

Executando o projeto teremos o resultado abaixo:

Fique a vontade para incluir outras funcionalidades no projeto.

Pegue o projeto completo aqui: Receitas.zip

"Portanto, irmãos, empenhem-se ainda mais para consolidar o chamado e a eleição de vocês, pois se agirem dessa forma, jamais tropeçarão, e assim vocês estarão ricamente providos quando entrarem no Reino eterno de nosso Senhor e Salvador Jesus Cristo."
2 Pedro 1:10,11

Referências:


José Carlos Macoratti