This article has been localized into German by the community.
Aktionsergebnisse
Im vorherigen Artikel haben wir uns mit Aktionen befasst, bei denen es sich um auf einem Controller definierte Methoden handelt. Aktionen werden aufgerufen, wenn eine angeforderte URL mit einer Aktion auf einem Controller abgeglichen wird (dies wird vom Routing-System durchgeführt). Wenn die Aktion (Methode) ihre Arbeit beendet hat, gibt sie in der Regel etwas an den Client zurück und implementiert in der Regel die Schnittstelle IActionResult (oder <IActionResult> wenn die Methode asynchron ist).
Sobald Ihr Controller die integrierte Basis-Controller-Klasse (Microsoft.AspNetCore.Mvc.Controller) erbt, erhalten wir eine breite Palette von Hilfsmethoden zum Generieren der Antwort (des Aktionsergebnisses). Ein Beispiel für eine solche Methode wurde bereits in diesem Lernprogramm verwendet: Die Methode View(). Die übereinstimmende View-Datei wird verwendet und in eine Instanz der ViewResult -Klasse umgewandelt, die die IActionResult -Schnittstelle implementiert. Danach wird es von ASP.NET MVC automatisch in eine Antwort auf den Browser umgewandelt - in diesem Fall in Form eines "OK" -Statuscodes und eines HTML-Texts.
Eine Ansicht ist jedoch bei weitem nicht das einzig mögliche Ergebnis einer Controller-Aktion. Da das Ergebnis schließlich an einen Browser zurückgegeben wird, sollten die verfügbaren Methoden alle möglichen Ergebnisse einer HTTP-Anforderung abdecken, sodass eine Controller-Aktion natürlich auch zu einer Umleitung, einer 404 (Seite nicht gefunden) oder einem anderen HTTP Statuscode führen kann. Hier ist eine unvollständige Liste der interessantesten und nützlichsten Methoden zum Generieren eines Aktionsergebnisses:
- Content() - Gibt die angegebene Zeichenfolge als Klartext an den Client zurück (normalerweise ein Browser).
- View() - gibt eine Ansicht an den Client zurück
- PartialView() - gibt eine Teilansicht (mehr dazu weiter hinten in diesem Tutorial) an den Client zurück
- File() - gibt den Inhalt einer angegebenen Datei an den Client zurück
- Json() - Gibt eine JSON-Antwort an den Client zurück
- Redirect() und RedirectPermanent() - geben eine Umleitungsantwort an den Browser zurück (temporär oder permanent) und leiten den Benutzer zu einer anderen URL weiter
- StatusCode() - Gibt einen benutzerdefinierten Statuscode an den Client zurück
Es gibt noch viele mehr, und Sie können natürlich Ihre eigenen implementieren oder das Ergebnis selbst generieren - die meisten dieser Methoden generieren einfach die relevante Klasse mit entsprechend festgelegten Eigenschaften. Beispielsweise generiert die Methode Content() einfach eine Instanz der Klasse ContentResult und füllt die Eigenschaft Content mit dem Wert, den Sie an die Methode übergeben .
Da es viele Arten von Antworten gibt, die die IActionResult-Schnittstelle implementieren, können Ihre Aktionen basierend auf der Logik Ihrer Methode jede dieser Antworten zurückgeben. Ein häufiger Anwendungsfall hierfür ist die Rückgabe einer Ansicht oder eines Inhalts, wenn der angeforderte Inhalt gefunden wird, oder eines Fehlers 404 (Seite nicht gefunden), wenn er nicht gefunden wird. Es könnte so aussehen:
public IActionResult Details(int id)
{
Product product = GetProduct(id);
if (product != null)
return View(product);
return NotFound();
}
In der ersten Zeile versuchen wir, das angeforderte Produkt mit einer zu implementierenden GetProduct() -Methode zu laden. Wenn das Produkt gefunden wird, geben wir es mithilfe der View() -Methode in einer Ansicht zurück. Andernfalls geben wir mithilfe der NotFound() -Methode einen 404-Fehler zurück. Dadurch wird im Grunde nur eine Instanz der NotFoundResult -Klasse erstellt. In diesem Fall gibt es also zwei mögliche Ergebnisse der Aktion, bei Bedarf können jedoch noch weitere Ergebnisse erzielt werden. Sie können alles zurückgeben, das die IActionResult-Schnittstelle implementiert.
Zusammenfassung
Eine Aktion ist eine Methode auf einem Controller, auf die dank des Routingsystems normalerweise über eine URL zugegriffen werden kann. Eine Aktion gibt normalerweise ein Aktionsergebnis zurück, das auf der IActionResult -Schnittstelle basiert. Es gibt viele Hilfsmethoden, die Sie bei der Generierung der gewünschten Ergebnisse für Ihre Aktion unterstützen. Dies sind die wichtigsten Aspekte eines ASP.NET MVC-Controllers. In den kommenden Artikeln werden wir uns etwas eingehender mit einigen der fortgeschritteneren Controller-Themen befassen.