Neues in ASP.NET 5, Teil 1: Tag Helper

Seite 4: Fazit

Inhaltsverzeichnis

Einige Dinge sind bei Tag Helpers noch zu beachten:

  • Es gibt bisher in Visual Studio keine IntelliSense-Eingabeunterstützung für eigene Tags beziehungsweise eigene Attribute für Standard-HTML-Tags.
  • Es kann mehrere Tag-Helper-Klassen für ein einzelnes Tag geben. Die Reihenfolge der Ausführung der Klassen entspricht dabei der der Einbindung in der View. Auch mehrere Tag-Helper-Klassen für ein Tag in einer Assembly sind möglich: Die Reihenfolge entspricht dann der Reihenfolge im Kompilat.
  • Eine Tag-Helper-Klasse kann auf die von anderen Tag-Helper-Klassen bereits gesetzten Attribute über output.Attributes zugreifen.
  • Es gibt derzeit noch einen Bug: Eine Tag-Helper-Klasse darf in ihrem Tag-Namen nur einen Großbuchstaben vor dem Wort "TagHelper" besitzen. Falsch ist also "DateTimeTagHelper", richtig "DatetimeTagHelper". Wenn das nicht beachtet wird, wird ASP.NET MVC 6 die Tag-Helper-Klasse nicht aufrufen. Die Groß-Klein-Schreibweise des Tags in der View ist dann aber egal (<DateTime> oder <dateTime> oder <datetime> usw.)
  • Es ist aber Pflicht, das selbstdefinierte Tag in der View korrekt zu schließen, sonst kommt es zum Laufzeitfehler: "Found a malformed 'DateTime' tag helper. Tag helpers must have a start and end tag or be self closing."
  • Innerhalb einer Tag-Helper-Klasse können Entwickler auch mit der View und damit mit anderen Tag-Helper-Instanzen interagieren. Dazu können sie sich über das in ASP.NET 5 eingebaute Dependecy-Injection-Framework eine Instanz der Klasse ViewContext liefern lassen. Die Klasse muss dafür eine Property bereitstellen:
      [Activate] private ViewContext ViewContext { get; set; }

Tag Helper bieten elegante Möglichkeiten, wiederverwendbare Komponenten für ASP.NET MVC 6 zu schaffen. Code in ASP.NET MVC Views lässt sich damit prägnanter gestalten. Bei den Tag Helpers kann man sich auch an die Webserver-Steuerelemente von ASP.NET Webforms erinnert fühlen. Tag Helper sind aber viel einfacher strukturiert; es gibt weder ein komplexes Ereignismodell, noch Templates und auch keine Designer-Unterstützung.

Wie Tag Helper letztlich die Performance der Seitenerzeugung negativ beeinflussen, wird man noch sehen müssen. ASP.NET 5 ist derzeit noch in der Beta-Phase, bei der man noch keine aussagekräftigen Leistungsmessungen vornehmen kann. Die gezeigten Beispiele basieren zum Teil auf dem Nightly Build vom Stand 14. Februar 2015 (Name: v1.0.0-Beta 4-12718). Den (leider bisher extrem spärlich dokumentierten) Quellcode findet man auf GitHub.

Dr. Holger Schwichtenberg
leitet das Expertennetzwerk www.IT-Visions.de, das Beratung, Schulungen und Softwareentwicklung Umfeld von .NET und Webtechniken anbietet. Er hält Vorträge auf Fachkonferenzen und ist Autor zahlreicher Fachbücher.
(ane)