Compartilhar via


Usando a classe TagBuilder para criar auxiliares HTML (VB)

por Stephen Walther

Stephen Walther apresenta uma classe de utilitário útil no ASP.NET estrutura MVC chamada classe TagBuilder. Você pode usar a classe TagBuilder para criar facilmente marcas HTML.

O ASP.NET estrutura MVC inclui uma classe de utilitário útil chamada classe TagBuilder que você pode usar ao criar auxiliares HTML. A classe TagBuilder, como o nome da classe sugere, permite que você crie facilmente marcas HTML. Neste breve tutorial, você receberá uma visão geral da classe TagBuilder e aprenderá a usar essa classe ao criar um auxiliar HTML simples que renderiza marcas img> HTML<.

Visão geral da classe TagBuilder

A classe TagBuilder está contida no namespace System.Web.Mvc. Ele tem cinco métodos:

  • AddCssClass() – permite que você adicione um novo atributo class="" a uma marca.
  • GenerateId() – permite adicionar um atributo id a uma marca. Esse método substitui automaticamente os períodos na ID (por padrão, os períodos são substituídos por sublinhados)
  • MergeAttribute() – permite adicionar atributos a uma marca. Há várias sobrecargas desse método.
  • SetInnerText() – permite que você defina o texto interno da marca. O texto interno é codificado em HTML automaticamente.
  • ToString() – permite que você renderize a marca. Você pode especificar se deseja criar uma marca normal, uma marca de início, uma marca de término ou uma marca de auto-fechamento.

A classe TagBuilder tem quatro propriedades importantes:

  • Atributos – representa todos os atributos da marca.
  • IdAttributeDotReplacement – representa o caractere usado pelo método GenerateId() para substituir períodos (o padrão é um sublinhado).
  • InnerHTML – representa o conteúdo interno da marca. Atribuir uma cadeia de caracteres a essa propriedade não codifica html a cadeia de caracteres.
  • TagName – representa o nome da marca.

Esses métodos e propriedades fornecem todos os métodos e propriedades básicos necessários para criar uma marca HTML. Você realmente não precisa usar a classe TagBuilder. Em vez disso, você pode usar uma classe StringBuilder. No entanto, a classe TagBuilder torna sua vida um pouco mais fácil.

Criando um auxiliar HTML de imagem

Ao criar uma instância da classe TagBuilder, você passa o nome da marca que deseja criar para o construtor TagBuilder. Em seguida, você pode chamar métodos como os métodos AddCssClass e MergeAttribute() para modificar os atributos da marca. Por fim, você chama o método ToString() para renderizar a marca.

Por exemplo, a Listagem 1 contém um auxiliar html de imagem. O Auxiliar de imagem é implementado internamente com um TagBuilder que representa uma marca HTML <img> .

Listagem 1 – Helpers\ImageHelper.vb

Public Module ImageHelper

<System.Runtime.CompilerServices.Extension> _
Function Image(ByVal helper As HtmlHelper, ByVal id As String, ByVal url As String, ByVal alternateText As String) As String
    Return Image(helper, id, url, alternateText, Nothing)
End Function

<System.Runtime.CompilerServices.Extension> _
Function Image(ByVal helper As HtmlHelper, ByVal id As String, ByVal url As String, ByVal alternateText As String, ByVal htmlAttributes As Object) As String
    ' Create tag builder
    Dim builder = New TagBuilder("img")

    ' Create valid id
    builder.GenerateId(id)

    ' Add attributes
    builder.MergeAttribute("src", url)
    builder.MergeAttribute("alt", alternateText)
    builder.MergeAttributes(New RouteValueDictionary(htmlAttributes))

    ' Render tag
    Return builder.ToString(TagRenderMode.SelfClosing)
End Function

End Module

O módulo na Listagem 1 contém dois métodos sobrecarregados chamados Image(). Ao chamar o método Image(), você pode passar um objeto que representa um conjunto de atributos HTML ou não.

Observe como o método TagBuilder.MergeAttribute() é usado para adicionar atributos individuais, como o atributo src ao TagBuilder. Observe, além disso, como o método TagBuilder.MergeAttributes() é usado para adicionar uma coleção de atributos ao TagBuilder. O método MergeAttributes() aceita uma cadeia de caracteres de dicionário<, parâmetro de objeto> . A classe RouteValueDictionary é usada para converter o Object que representa a coleção de atributos em uma cadeia de caracteres dictionary,object<>.

Depois de criar o Auxiliar de imagem, você pode usar o auxiliar em suas exibições ASP.NET MVC, assim como qualquer um dos outros auxiliares HTML padrão. O modo de exibição na Listagem 2 usa o Auxiliar de imagem para exibir a mesma imagem de um Xbox duas vezes (consulte a Figura 1). O auxiliar Image() é chamado com e sem uma coleção de atributos HTML.

Listagem 2 – Home\Index.aspx

<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="MvcApplication1" %>
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">

    <!-- Calling helper without HTML attributes -->
    <%= Html.Image("img1", ResolveUrl("~/Content/XBox.jpg"), "XBox Console") %>

    <!-- Calling helper with HTML attributes -->
    <%= Html.Image("img1", ResolveUrl("~/Content/XBox.jpg"), "XBox Console", New With {.border="4px"})%>

</asp:Content>

A caixa de diálogo Novo Projeto

Figura 01: Usando o auxiliar de imagem (clique para exibir a imagem em tamanho real)

Observe que você deve importar o namespace associado ao Auxiliar de imagem na parte superior da exibição Index.aspx. O auxiliar é importado com a seguinte diretiva:

<%@ Import Namespace="MvcApplication1" %>

Em um aplicativo do Visual Basic, o namespace padrão é o mesmo que o nome do aplicativo.