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:
Visual Studio Community 2015
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 :
GetContaProduto() - que retorna o total de produtos;
GetContaProdutoPorTipo() - que retorna o total de produtos de um certo tipo;
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 produtoEstatisticaO 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: