Criação de TagHelpers customizadas no com ASP.NET Core 2.0

0

As TagHelpers são classes escritas em C #, mas são anexadas a elementos HTML para executar o código do lado do servidor a partir da View Razor. Em outras palavras, a View criada em HTML tem sua lógica de apresentação definida em C#, que é executada no servidor.

Então, como vamos usar o Tag Helpers?

Para usar os Helpers de Tag internos ou personalizados, é necessário primeiro referenciar a biblioteca do TagHelper denominada Microsoft.AspNetCore.Mvc.TagHelpers. Também pode ser via Nuget. Uma vez referenciado, importe-o usando a diretiva @AddTagHelper como mostrado abaixo dentro de _ViewImports.cshtml,

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 
     

 

Um TagHelper é qualquer classe que implementa a interface ITagHelper. No entanto, quando criamos um Taghelper cusmotizado, você geralmente deriva de TagHelper, o que fornece acesso ao método Process.

Criando assistentes de tag personalizados

Agora temos uma ideia básica do que é o TagHelper, então que tal criar nosso próprio? Vou pegar um cenário muito simples, no qual vamos introduzir uma tag simples chamada ‘Appreciate’, que pegará o valor como nome de uma pessoa e será exibida na tela.

Crie uma nova classe chamada AppreciateTagHelper e adicione o código como mostrado abaixo:

     public class AppreciateTagHelper: TagHelper {  
        private  
        const string appreciationText = "Olá";  
        public string PersonName {  
            get;  
            set;  
        }  
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) {  
            output.TagName = "Appreciation";  
            string message = $ "{appreciationText}, {PersonName}";  
            var attribute = new TagHelperAttribute(name: "Label", value: message);  
            output.Attributes.Add(attribute);  
            output.Content.SetContent(message);  
        }  
    }  

 

Em seguida, importe o recém-criado Tag Helper e isso pode ser feito adicionando uma linha no arquivo _ViewImports.cshtml como mostrado abaixo,

 @using AspNetCoreTagHelpers
@using AspNetCoreTagHelpers.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper AspNetCoreTagHelpers.Helper.AppreciateTagHelper, AspNetCoreTagHelpers

 

A última é atualizar a respectiva view e o código para isso é:

     <appreciate person-name="Código Simples"></appreciate>  

 

Com isto você deverá agora ter tudo funcionando!  Você pode ter acesso ao código fonte aqui.

Um grande abraço!

 

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com