Webframeworkk/ASP.NET Core/Crud Opertations
Willkommen zu diesem umfassenden Tutorial zur Implementierung von CRUD-Operationen (Create, Read, Update, Delete) in ASP.NET Core MVC. Dieser Leitfaden konzentriert sich auf den Aufbau robuster, wartbarer und effizienter Webanwendungen.
🏗️ 1. Controller: Das Herzstück der Anwendung
Controller verwalten eingehende HTTP-Anfragen, interagieren mit Services und geben die entsprechenden Views zurück.
🔍 Read (Die Index-Aktion)
Die Index-Aktion ist für das Abrufen und Anzeigen von Daten verantwortlich.
- Aufgaben: Daten von der Service-Ebene abrufen, Sortierung/Filterung anwenden und die Daten in ein View-Modell verpacken.
- Rückgabetyp:
IActionResult(normalerweise einViewResult).
➕ Create (Die Create-Aktionen)
Die Create-Operation erfordert in der Regel zwei Aktionsmethoden:
- HttpGet
Create(): Gibt die "Create"-View zurück, die das leere Formular enthält. - HttpPost
Create(Model model):
-
- Empfängt Formulardaten über das Model Binding.
- Validiert die Eingabe mit
ModelState.IsValid. - Speichert die Entität über die Service-Ebene.
- Leitet nach Erfolg zur
Index-Aktion weiter (um doppelte Formularübermittlungen zu vermeiden).
🖼️ 2. Views: Gestaltung der Benutzeroberfläche
Views sind für die Präsentationslogik verantwortlich. Verwenden Sie stark typisierte Views (Strongly Typed Views) für eine bessere Wartbarkeit und IntelliSense-Unterstützung.
📋 Index-View (Read)
- Zeigt eine Liste oder Tabelle von Elementen an.
- Enthält oft Benutzeroberflächen für Sortierung und Suche.
- Kann Partial Views nutzen, um den Code sauber zu halten (z. B. eine Vorlage für jede Zeile).
📝 Create-View (Create)
- Erstellt ein Formular mithilfe von Tag Helpern (
<form>,<input>,<span asp-validation-for="...">). - Bietet sofortiges Feedback durch Validierungsattribute.
- Bindet an ein spezifisches Request-Modell (z. B.
PersonAddRequest).
🔄 3. Fortgeschrittene Funktionen: Sortieren & Suchen
Verbessern Sie die Benutzererfahrung, indem Sie das Finden und Organisieren von Daten erleichtern.
📊 Sortierung
- Verwenden Sie Query-String-Parameter (z. B.
?sortBy=Name&sortOrder=DESC), um die Logik auf dem Server zu steuern. - Übergeben Sie den aktuellen Sortierstatus via
ViewBagoder ein spezielles View-Modell. - Erstellen Sie wiederverwendbare Komponenten (wie eine Partial View für Spaltenüberschriften) für Sortierlinks.
🔎 Suche
- Implementieren Sie ein Suchformular mit Feldern wie
searchBy(Dropdown) undsearchString(Texteingabe). - Übermitteln Sie diese Parameter an die
Index-Aktion. - Filtern Sie die Daten auf Service- oder Datenbankebene, um die Performance zu optimieren.
💡 4. Best Practices & Stolperfallen
✅ Die "Do's"
- Stark typisierte Views: Bevorzugen Sie diese immer gegenüber
ViewBagfür Typsicherheit. - Trennung der Zuständigkeiten (Separation of Concerns): Halten Sie Geschäftslogik in Services, nicht in Controllern oder Views.
- Validierung: Verwenden Sie Data Annotations (
[Required],[StringLength]) und prüfen SieModelState.IsValid. - Async/Await: Verwenden Sie asynchrone Operationen für alle I/O-Aufgaben (Datenbank- oder API-Aufrufe).
- Sicherheit: Validieren und bereinigen Sie Benutzereingaben immer und verwenden Sie DTOs (Data Transfer Objects).
❌ Die "Don'ts"
- Komplexe Logik in Views: Vermeiden Sie
if/else-Blöcke oder schwere Berechnungen in.cshtml-Dateien. - Hardcodierte Strings: Verwenden Sie Konstanten oder Enums für Spaltennamen und Sortieroptionen.
- Übermäßige Nutzung von ViewBag: Es fehlt die Prüfung zur Kompilierzeit, was zu instabilem Code führt.
🛣️ 5. Routing in ASP.NET Core
Routing ordnet URLs den Controller-Aktionen zu.
🏷️ Attribut-Routing
Verwenden Sie das [Route]-Attribut für präzise Kontrolle.
- Controller-Ebene:
[Route("[controller]")]fungiert als Präfix. - Aktions-Ebene:
[Route("[action]")]definiert den spezifischen Endpunkt.
🎫 Route-Tokens
Tokens wie [controller] und [action] ermöglichen die Erstellung dynamischer Routen, die sich automatisch aktualisieren, wenn Sie Ihre Klassen oder Methoden umbenennen.
🎓 6. Fokusbereiche für Vorstellungsgespräche
Wenn Sie sich auf ein technisches Interview vorbereiten, sollten Sie folgende Themen beherrschen:
- MVC-Architektur: Wie die drei Komponenten interagieren.
- Model Binding: Wie Daten von einem Formular zu einem Aktionsparameter gelangen.
- Post-Redirect-Get-Pattern: Warum wir nach einem erfolgreichen POST-Request weiterleiten.
- Dependency Injection: Wie Services den Controllern bereitgestellt werden.
🏁 Fazit
(Schlussabschnitt ggf. ergänzen)