Webframeworkk/ASP.NET Core/Tag-Helfer
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
Dieses Tutorial führt dich durch die Konzepte von Tag Helpern in ASP.NET Core MVC und zeigt dir, wie du sie effektiv in einer CRUD-Anwendung (Create, Read, Update, Delete) einsetzt.
1. Einführung in Tag Helper
Tag Helper sind C#-Klassen, die es ermöglichen, HTML-Elemente auf der Serverseite mit Logik zu erweitern. Sie sehen aus wie Standard-HTML-Tags, werden aber von der Razor-Engine verarbeitet.
Vorteile von Tag Helpern
- HTML-freundliche Syntax: Sie lassen sich nahtlos in den HTML-Code integrieren.
- Starke Typisierung: Bietet IntelliSense-Unterstützung und Fehlerprüfung zur Kompilierzeit.
- Wiederverwendbarkeit: Einmal erstellt, können sie projektübergreifend genutzt werden.
- Sicherheit: Automatische Generierung von Anti-Forgery-Token in Formularen.
2. Wichtige Tag Helper im Detail
Anchor Tag Helper (<a>)
Erzeugt Links unter Berücksichtigung des Routings.
<a asp-controller="Home" asp-action="Index">Home</a> <!-- Generiert: <a href="/Home/Index">Home</a> -->
Form Tag Helper (<form>)
Erstellt ein Formular und fügt automatisch Sicherheitsmerkmale hinzu.
<form asp-controller="Products" asp-action="Create" method="post">
<!-- Felder hier -->
</form>
Input Tag Helper (<input>)
Bindet ein Eingabefeld direkt an eine Modell-Eigenschaft (asp-for).
<input asp-for="ProductName" class="form-control" />
Vorteil: Setzt automatisch den richtigen type (z.B. email oder password) basierend auf dem Datentyp im Modell.
Select Tag Helper (<select>)
Generiert Dropdown-Listen.
<select asp-for="CategoryId" asp-items="Model.Categories"></select>
3. CRUD-Operationen umsetzen
Ein typisches CRUD-Szenario umfasst einen Controller (PersonsController) und die dazugehörigen Views.
A. Index (Read)
Controller (GET): Ruft die Liste der Personen ab, filtert und sortiert diese optional und gibt sie an die View zurück.
public IActionResult Index(string searchBy, string searchString) {
var persons = _personsService.GetFilteredPersons(searchBy, searchString);
return View(persons);
}
View: Zeigt eine Tabelle an und nutzt den Anchor Tag Helper für Links zu Details, Edit oder Delete.
<a asp-action="Edit" asp-route-id="@item.Id">Bearbeiten</a>
B. Create (Erstellen)
Controller:
- GET: Zeigt das leere Formular an.
- POST: Empfängt die Daten, validiert das
ModelStateund speichert bei Erfolg.
[HttpPost]
public IActionResult Create(PersonAddRequest personRequest) {
if (!ModelState.IsValid) return View(personRequest);
_personsService.AddPerson(personRequest);
return RedirectToAction("Index");
}
C. Edit (Bearbeiten)
Ähnlich wie Create, benötigt aber zusätzlich die ID im GET-Aufruf, um die bestehenden Daten zu laden.
D. Delete (Löschen)
Wichtig: Löschvorgänge sollten aus Sicherheitsgründen immer über einen POST-Request erfolgen, nachdem eine Bestätigungsseite (GET) angezeigt wurde.
4. Validierung & Formular-Submission
ASP.NET Core bietet eine integrierte Validierungskette:
- Client-Side Validation: JavaScript (jQuery) prüft die Felder sofort (spart Server-Ressourcen).
- Model Binding: Daten aus dem Formular werden in ein C#-Objekt überführt.
- Model Validation: Serverseitige Prüfung der Data Annotations (z.B.
[Required]).
Anzeige von Fehlern in der View
<div asp-validation-summary="All" class="text-danger"></div> <span asp-validation-for="ProductName" class="text-danger"></span>
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).