ASP .NET 5 - Apresentando a ASP .NET MVC 6 - Diretiva @inject -  II


  Neste artigo vou apresentar a ASP .NET MVC 6 e alguns de seus novos recursos criando uma aplicação MVC 6 bem simples.

Na primeira parte deste artigo apresentei alguns dos recursos básicos do framework MVC6 e criei um projeto MVC 6 do início.

Nesta parte vou apresentar a diretiva @inject mostrando como usar esse recurso em nossa aplicação de exemplo.

recursos usados:

Apresentando a diretiva @inject (Injetando dependências)

A ASP .NET MVC 6 apresenta novas diretivas que podemos usar em nossa aplicação. Uma delas é a diretiva @inject.

A diretiva @inject permite que você injete chamadas de métodos a partir de uma classe ou serviço diretamente em sua view.

Vamos ver esse recurso em ação em nosso projeto de exemplo.

Abra o projeto Mvc6_intro criado na primeira parte deste artigo.

Vamos criar uma classe chamada ProdutoDestaque na pasta Models do nosso projeto com o código abaixo:

using System.Linq;
using System.Threading.Tasks;
namespace Mvc6_Intro.Models
{
    public class ProdutoDestaque
    {
        private GerenciaProduto gp = new GerenciaProduto();
        public async Task<int> GetContaProduto()
        {
            return await Task.FromResult(gp.GetTodos.Count());
        }
        public async Task<int> GetContaProdutoPorTipo(string tipo)
        {
            return await Task.FromResult(gp.GetProdutosPorTipo(tipo).Count);
        }
    }
}

A classe ProdutoDestaque define dois métodos :

Note que neste código usamos métodos assíncronos. (asycn)

O que vamos fazer agora é injetar essa classe em nossa view Index.cshtml na pasta Home incluindo a linha de código abaixo na view:

@inject Mvc6_Intro.Models.ProdutoDestaque produtoEstatistica

O código completo pode ser visto abaixo:

@model IEnumerable<Mvc6_Intro.Models.Produto>
@inject Mvc6_Intro.Models.ProdutoDestaque estatisticaProdutos
    <h2>Macoratti .net </h2>
    <h3>Relação de Produtos</h3>
    <hr />
    <ul>
        @foreach (var p in Model)
        {
            <li>@string.Format("{0}  -  {1}", p.Nome, p.Tipo)</li>
        }
   </ul>
<hr />
Estatísticas dos Produtos
<div>
    <span>Sucos  : @await estatisticaProdutos.GetContaProdutoPorTipo("Suco")</span>
    <br />
    <span>Frutas : @await estatisticaProdutos.GetContaProdutoPorTipo("Fruta")</span>
    <br />
    <span>Condimentos : @await estatisticaProdutos.GetContaProdutoPorTipo("Condimento")</span>
    <br />
    <span>Total de Produtos : @await estatisticaProdutos.GetContaProduto()</span>
</div>  

Agora para podermos executar o projeto e ver o recurso @inject funcionando precisamos configurar o método AddTransient() no método Configure da classe Startup.cs  incluindo o modelo ProdutoDestaque().

O código abaixo vemos a linha em azul incluindo o modelo ProdutoDestaque() no método AddTransient() :

  public class Startup
  {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddTransient<Mvc6_Intro.Models.ProdutoDestaque>();
        }
        public void Configure(IApplicationBuilder app)
        {
            app.UseMvc(m =>
            {
                m.MapRoute(
                name: "default",
                template: "{controller}/{action}/{id?}",
                defaults: new
                {
                    controller = "Home",
                    action = "Index"
                });
            });
        }
    }

Agora é só alegria...

Vamos executar o projeto e ver o resultado:

Na terceira parte do artigo vou continuar a expor mais novidades do MVC 6 da ASP .NET 5.

Pegue o projeto completo aqui : Mvc6_Intro_2.zip

Rom 3:10 como está escrito: Não há justo, nem sequer um.

Rom 3:11 Não há quem entenda; não há quem busque a Deus.

Rom 3:12 Todos se extraviaram; juntamente se fizeram inúteis. Não há quem faça o bem, não há nem um só.
 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti