Freigeben über


Verwenden der TagBuilder-Klasse zum Erstellen von HTML-Hilfsprogrammen (C#)

von Stephen Walther

Stephen Walther stellt Ihnen eine nützliche Hilfsprogrammklasse im ASP.NET MVC-Framework mit dem Namen TagBuilder-Klasse vor. Sie können die TagBuilder-Klasse verwenden, um html-Tags einfach zu erstellen.

Das ASP.NET MVC-Framework enthält eine nützliche Hilfsprogrammklasse namens tagBuilder-Klasse, die Sie beim Erstellen von HTML-Hilfsprogrammen verwenden können. Die TagBuilder-Klasse, wie der Name der Klasse schon sagt, ermöglicht Ihnen die einfache Erstellung von HTML-Tags. In diesem kurzen Tutorial erhalten Sie eine Übersicht über die TagBuilder-Klasse und erfahren, wie Sie diese Klasse beim Erstellen eines einfachen HTML-Hilfsprogramms verwenden, das HTML-Img-Tags <> rendert.

Übersicht über die TagBuilder-Klasse

Die TagBuilder-Klasse ist im System.Web.Mvc-Namespace enthalten. Es verfügt über fünf Methoden:

  • AddCssClass(): Ermöglicht das Hinzufügen eines neuen class=""- Attributs zu einem Tag.
  • GenerateId(): Ermöglicht das Hinzufügen eines id-Attributs zu einem Tag. Diese Methode ersetzt automatisch Punkte in der ID (standardmäßig werden Punkte durch Unterstriche ersetzt).
  • MergeAttribute(): Ermöglicht das Hinzufügen von Attributen zu einem Tag. Es gibt mehrere Überladungen dieser Methode.
  • SetInnerText(): Ermöglicht ihnen, den inneren Text des Tags festzulegen. Der innere Text wird automatisch HTML-codiert.
  • ToString(): Ermöglicht das Rendern des Tags. Sie können angeben, ob Sie ein normales Tag, ein Starttag, ein Endtag oder ein selbstschließendes Tag erstellen möchten.

Die TagBuilder-Klasse verfügt über vier wichtige Eigenschaften:

  • Attribute: Stellt alle Attribute des Tags dar.
  • IdAttributeDotReplacement: Stellt das Zeichen dar, das von der GenerateId()-Methode zum Ersetzen von Punkten verwendet wird (der Standardwert ist ein Unterstrich).
  • InnerHTML: Stellt den inneren Inhalt des Tags dar. Durch das Zuweisen einer Zeichenfolge zu dieser Eigenschaft wird die Zeichenfolge nicht html codiert.
  • TagName: Stellt den Namen des Tags dar.

Mit diesen Methoden und Eigenschaften erhalten Sie alle grundlegenden Methoden und Eigenschaften, die Sie zum Erstellen eines HTML-Tags benötigen. Sie müssen die TagBuilder-Klasse nicht wirklich verwenden. Sie können stattdessen eine StringBuilder-Klasse verwenden. Die TagBuilder-Klasse erleichtert Ihnen das Leben jedoch etwas.

Erstellen eines BILD-HTML-Hilfsprogrammes

Wenn Sie eine instance der TagBuilder-Klasse erstellen, übergeben Sie den Namen des Tags, das Sie erstellen möchten, an den TagBuilder-Konstruktor. Als Nächstes können Sie Methoden wie die AddCssClass- und MergeAttribute()-Methoden aufrufen, um die Attribute des Tags zu ändern. Schließlich rufen Sie die ToString()-Methode auf, um das Tag zu rendern.

Beispielsweise enthält Listing 1 ein Bild-HTML-Hilfsprogramm. Das Imagehilfsprogramm wird intern mit einem TagBuilder implementiert, der ein HTML-img-Tag <> darstellt.

Auflistung 1: Helpers\ImageHelper.cs

using System.Web.Mvc;
using System.Web.Routing;

namespace MvcApplication1.Helpers
{
    public static class ImageHelper
    {
        public static string Image(this HtmlHelper helper, string id, string url, string alternateText)
        {
            return Image(helper, id, url, alternateText, null);
        }

        public static string Image(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes)
        {
            // Create tag builder
            var 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);
        }

    }
}

Die -Klasse in Listing 1 enthält zwei statische überladene Methoden namens Image. Wenn Sie die Image()-Methode aufrufen, können Sie ein -Objekt übergeben, das einen Satz von HTML-Attributen darstellt oder nicht.

Beachten Sie, dass die TagBuilder.MergeAttribute()-Methode verwendet wird, um dem TagBuilder einzelne Attribute wie das src-Attribut hinzuzufügen. Beachten Sie außerdem, wie die TagBuilder.MergeAttributes()-Methode verwendet wird, um dem TagBuilder eine Auflistung von Attributen hinzuzufügen. Die MergeAttributes()-Methode akzeptiert eine Dictionary-Zeichenfolge<, einen Object-Parameter> . Die RouteValueDictionary-Klasse wird verwendet, um das Objekt, das die Auflistung von Attributen darstellt, in eine Dictionary-Zeichenfolge<, ein Objekt> zu konvertieren.

Nachdem Sie das Bildhilfsprogramm erstellt haben, können Sie das Hilfsprogramm in Ihren ASP.NET MVC-Ansichten wie alle anderen standardmäßigen HTML-Hilfsprogramme verwenden. Die Ansicht in Listing 2 verwendet das Bildhilfsprogramm, um dasselbe Bild einer Xbox zweimal anzuzeigen (siehe Abbildung 1). Das Image()-Hilfsprogramm wird sowohl mit als auch ohne HTML-Attributauflistung aufgerufen.

Auflistung 2 : Home\Index.aspx

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="MvcApplication1.Helpers" %>

<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 {border="4px"})%>

</asp:Content>

Dialogfeld „New Project“ (Neues Projekt)

Abbildung 01: Verwenden des Bildhilfsprogrammes (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)

Beachten Sie, dass Sie den Namespace importieren müssen, der dem Imagehilfsprogramm oben in der Index.aspx-Ansicht zugeordnet ist. Das Hilfsprogramm wird mit der folgenden Direktive importiert:

<%@ Import Namespace="MvcApplication1.Helpers" %>