Kurse:Controllers: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „Absolut! Hier ist die deutsche Übersetzung des Textes, formatiert in MediaWiki-Syntax. = Einführung in Controller = Ein Controller ist eine Klasse, die verwendet wird, um eine Reihe von Aktionen (oder Aktionsmethoden) zu gruppieren. Aktionsmethoden führen eine bestimmte Operation aus, wenn eine Anfrage empfangen wird, und geben das Ergebnis (Antwort) zurück. == Controller erstellen == Controller sollten eines oder beides erfüllen: Der Klassenname…“ |
(kein Unterschied)
|
Version vom 23. Juni 2025, 09:19 Uhr
Absolut! Hier ist die deutsche Übersetzung des Textes, formatiert in MediaWiki-Syntax.
Einführung in Controller
Ein Controller ist eine Klasse, die verwendet wird, um eine Reihe von Aktionen (oder Aktionsmethoden) zu gruppieren. Aktionsmethoden führen eine bestimmte Operation aus, wenn eine Anfrage empfangen wird, und geben das Ergebnis (Antwort) zurück.
Controller erstellen
Controller sollten eines oder beides erfüllen:
Der Klassenname sollte mit "Controller" enden. Bsp: <code>HomeController</code> Das <code>[Controller]</code>-Attribut wird auf die Klasse selbst oder auf ihre Basisklasse angewendet. <source lang="csharp"> [Controller] class KlassenNameController { // Aktionsmethoden hier } </source>
Optional:
Ist eine öffentliche (<code>public</code>) Klasse. Erbt von <code>Microsoft.AspNetCore.Mvc.Controller</code>.
'Routing' in Controllern aktivieren
AddControllers( )
<source lang="csharp"> builder.Services.AddControllers(); </source> Fügt alle Controller als Dienste zur <code>IServiceCollection</code> hinzu. So kann auf sie zugegriffen werden, wenn ein bestimmter Endpunkt sie benötigt.
MapControllers()
<source lang="csharp"> app.MapControllers(); </source> Fügt alle Aktionsmethoden als Endpunkte hinzu. Dadurch entfällt die Notwendigkeit, die <code>UseEndPoints()</code>-Methode zu verwenden, um Aktionsmethoden als Endpunkte hinzuzufügen.
Verantwortlichkeiten von Controllern
Anfragen lesen ** Extrahieren von Datenwerten aus der Anfrage, wie z.B. Query-String-Parameter, Anfragekörper (Request Body), Anfrage-Cookies, Anfrage-Header usw. Modelle aufrufen ** Aufrufen von Geschäftslogik-Methoden. Geschäftsoperationen sind in der Regel als 'Dienste' (Services) verfügbar. Validierung ** Validieren eingehender Anfragedetails (Query-String-Parameter, Anfragekörper, Anfrage-Cookies, Anfrage-Header usw.) Antwort vorbereiten ** Auswählen, welche Art von Antwort an den Client gesendet werden soll, und Vorbereiten der Antwort (Aktionsergebnis).
ContentResult
Ein <code>ContentResult</code> kann jeden Antworttyp repräsentieren, basierend auf dem angegebenen MIME-Typ. Der MIME-Typ repräsentiert den Typ des Inhalts, wie z.B. <code>text/plain</code>, <code>text/html</code>, <code>application/json</code>, <code>application/xml</code>, <code>application/pdf</code> usw.
<source lang="csharp"> return new ContentResult() { Content = "Inhalt", ContentType = "Inhaltstyp" }; // [oder] return Content("Inhalt", "Inhaltstyp"); </source>
JsonResult
Ein <code>JsonResult</code> kann ein Objekt im JavaScript Object Notation (JSON)-Format repräsentieren. Bsp: <code>{ "firstName": "James", "lastName": "Smith", "age": 25 }</code>
<source lang="csharp"> return new JsonResult(ihr_objekt); // [oder] return Json(ihr_objekt); </source>
Dateiergebnisse (File Results)
Ein Dateiergebnis sendet den Inhalt einer Datei als Antwort. Bsp: PDF-Datei, TXT-Datei, EXE-Datei, ZIP-Datei usw.
VirtualFileResult
<source lang="csharp"> return new VirtualFileResult("relativer/dateipfad", "inhaltstyp"); //oder return File("relativer/dateipfad", "inhaltstyp"); </source> Repräsentiert eine Datei innerhalb des WebRoot-Ordners (standardmäßig 'wwwroot'). Wird verwendet, wenn sich die Datei im WebRoot-Ordner befindet.
PhysicalFileResult
Repräsentiert eine Datei, die nicht notwendigerweise Teil des Projektordners ist. Wird verwendet, wenn sich die Datei außerhalb des WebRoot-Ordners befindet.
<source lang="csharp"> return new PhysicalFileResult("absoluter/dateipfad", "inhaltstyp"); //oder return PhysicalFile("absoluter/dateipfad", "inhaltstyp"); </source>
FileContentResult
Repräsentiert eine Datei aus einem <code>byte[]</code>. Wird verwendet, wenn ein Teil der Datei oder ein <code>byte[]</code> aus einer anderen Datenquelle als Antwort gesendet werden muss.
<source lang="csharp"> return new FileContentResult(byte_array, "inhaltstyp"); //oder return File(byte_array, "inhaltstyp"); </source>
IActionResult
Es ist die übergeordnete Schnittstelle (Interface) für alle Aktionsergebnis-Klassen wie <code>ContentResult</code>, <code>JsonResult</code>, <code>RedirectResult</code>, <code>StatusCodeResult</code>, <code>ViewResult</code> usw. Indem der Rückgabetyp als <code>IActionResult</code> angegeben wird, können Sie jeden der Untertypen von <code>IActionResult</code> zurückgeben.
Statuscode-Ergebnisse (Status Code Results)
Ein Statuscode-Ergebnis sendet eine leere Antwort mit dem angegebenen Statuscode. Bsp: 200, 400, 401, 404, 500 usw.
StatusCodeResult
Repräsentiert eine Antwort mit dem angegebenen Statuscode. Wird verwendet, wenn Sie einen bestimmten HTTP-Statuscode als Antwort senden möchten.
<source lang="csharp"> return new StatusCodeResult(status_code); //oder return StatusCode(status_code); </source>
UnauthorizedResult
Repräsentiert eine Antwort mit dem HTTP-Statuscode '401 Unauthorized'. Wird verwendet, wenn der Benutzer nicht autorisiert (nicht angemeldet) ist.
<source lang="csharp"> return new UnauthorizedResult(); //oder return Unauthorized(); </source>
BadRequestResult
Repräsentiert eine Antwort mit dem HTTP-Statuscode '400 Bad Request'. Wird verwendet, wenn die Anfragewerte ungültig sind (Validierungsfehler).
<source lang="csharp"> return new BadRequestResult(); //oder return BadRequest(); </source>
NotFoundResult
Repräsentiert eine Antwort mit dem HTTP-Statuscode '404 Not Found'. Wird verwendet, wenn die angeforderten Informationen auf dem Server nicht verfügbar sind.
<source lang="csharp"> return new NotFoundResult(); //oder return NotFound(); </source>
Umleitungsergebnisse (Redirect Results)
Ein Umleitungsergebnis sendet entweder eine HTTP 302- oder 301-Antwort an den Browser, um auf eine bestimmte Aktion oder URL umzuleiten. Bsp: Umleitung von 'action1' zu 'action2'.
RedirectToActionResult
Repräsentiert eine Antwort zur Umleitung von der aktuellen Aktionsmethode zu einer anderen Aktionsmethode, basierend auf dem Aktionsnamen und dem Controllernamen.
302 - Found
<source lang="csharp"> return new RedirectToActionResult("action", "controller", new { route_values }); //oder return RedirectToAction("action", "controller", new { route_values }); </source>
301 - Moved Permanently
<source lang="csharp"> return new RedirectToActionResult("action", "controller", new { route_values }, true); //oder return RedirectToActionPermanent("action", "controller", new { route_values }); </source>
LocalRedirectResult
Repräsentiert eine Antwort zur Umleitung von der aktuellen Aktionsmethode zu einer anderen lokalen URL.
302 - Found
<source lang="csharp"> return new LocalRedirectResult("url"); //oder return LocalRedirect("url"); </source>
301 - Moved Permanently
<source lang="csharp"> return new LocalRedirectResult("url", true); //oder return LocalRedirectPermanent("url"); </source>
RedirectResult
Repräsentiert eine Antwort zur Umleitung von der aktuellen Aktionsmethode zu einer beliebigen anderen URL (entweder innerhalb derselben Webanwendung oder einer anderen Webanwendung).
302 - Found
<source lang="csharp"> return new RedirectResult("url"); //oder return Redirect("url"); </source>
301 - Moved Permanently
<source lang="csharp"> return new RedirectResult("url", true); //oder return RedirectPermanent("url"); </source>