<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://mediawiki.wissen-ahrensburg.de/index.php?action=history&amp;feed=atom&amp;title=Webframeworkk%2FASP.NET_Core%2FControllers_und_IActionResult</id>
	<title>Webframeworkk/ASP.NET Core/Controllers und IActionResult - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.wissen-ahrensburg.de/index.php?action=history&amp;feed=atom&amp;title=Webframeworkk%2FASP.NET_Core%2FControllers_und_IActionResult"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Controllers_und_IActionResult&amp;action=history"/>
	<updated>2026-08-19T17:34:39Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Dokument</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Controllers_und_IActionResult&amp;diff=258&amp;oldid=prev</id>
		<title>imported&gt;Import: Version 183</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Controllers_und_IActionResult&amp;diff=258&amp;oldid=prev"/>
		<updated>2026-02-17T13:05:13Z</updated>

		<summary type="html">&lt;p&gt;Version 183&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Controllers_und_IActionResult&amp;amp;diff=258&amp;amp;oldid=3197&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>imported&gt;Import</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Controllers_und_IActionResult&amp;diff=3198&amp;oldid=prev</id>
		<title>Thorsten: /* Statuscodes für Redirects */</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Controllers_und_IActionResult&amp;diff=3198&amp;oldid=prev"/>
		<updated>2026-02-17T13:05:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Statuscodes für Redirects&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Controllers_und_IActionResult&amp;amp;diff=3198&amp;amp;oldid=258&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Thorsten</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Controllers_und_IActionResult&amp;diff=3197&amp;oldid=prev</id>
		<title>Thorsten: Die Seite wurde neu angelegt: „In der **Model-View-Controller (MVC)** Architektur fungieren Controller als Orchestratoren der Webanwendung. Sie verarbeiten eingehende HTTP-Anfragen, interagieren mit dem Model (Datenbank oder Business-Logik) und wählen die passende View für die Antwort aus.  * **Controller**: Klassen, die verwandte Action Methods gruppieren. Sie befinden sich typischerweise im Ordner `Controllers`. * **Action Methods**: Öffentliche Methoden innerhalb eines Controller…“</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Controllers_und_IActionResult&amp;diff=3197&amp;oldid=prev"/>
		<updated>2026-02-16T22:41:05Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „In der **Model-View-Controller (MVC)** Architektur fungieren Controller als Orchestratoren der Webanwendung. Sie verarbeiten eingehende HTTP-Anfragen, interagieren mit dem Model (Datenbank oder Business-Logik) und wählen die passende View für die Antwort aus.  * **Controller**: Klassen, die verwandte Action Methods gruppieren. Sie befinden sich typischerweise im Ordner `Controllers`. * **Action Methods**: Öffentliche Methoden innerhalb eines Controller…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).&amp;#039;&amp;#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In der **Model-View-Controller (MVC)** Architektur fungieren Controller als Orchestratoren der Webanwendung. Sie verarbeiten eingehende HTTP-Anfragen, interagieren mit dem Model (Datenbank oder Business-Logik) und wählen die passende View für die Antwort aus.&lt;br /&gt;
&lt;br /&gt;
* **Controller**: Klassen, die verwandte Action Methods gruppieren. Sie befinden sich typischerweise im Ordner `Controllers`.&lt;br /&gt;
* **Action Methods**: Öffentliche Methoden innerhalb eines Controllers, die spezifische Anfragen bearbeiten (z.B. Anzeigen einer Seite, Verarbeiten von Formulardaten).&lt;br /&gt;
&lt;br /&gt;
== Zweck ==&lt;br /&gt;
* **Logik organisieren**: Controller bieten eine logische Gruppierung für Aktionen, die auf demselben Datentyp oder derselben Funktionalität arbeiten.&lt;br /&gt;
* **Anfragen behandeln**: Sie sind verantwortlich für das Verarbeiten von Requests, das Abrufen notwendiger Daten und das Vorbereiten einer Antwort.&lt;br /&gt;
* **Views auswählen**: Controller wählen oft die geeignete View zum Rendern aus und übergeben Daten (das Model) an die View.&lt;br /&gt;
&lt;br /&gt;
== Syntax und Konventionen ==&lt;br /&gt;
* **Klassenbenennung**: Controller-Klassennamen sollten auf &amp;quot;Controller&amp;quot; enden (z.B. `HomeController`, `ProductsController`).&lt;br /&gt;
* **Vererbung**: Controller erben von der Basisklasse `Controller` (oder `ControllerBase` für API-Controller).&lt;br /&gt;
* **Action Method Benennung**: Methoden können jeden gültigen C#-Namen haben.&lt;br /&gt;
* **Routing**: Routen können über Attribute wie `[Route]`, `[HttpGet]`, `[HttpPost]` definiert werden.&lt;br /&gt;
&lt;br /&gt;
=== Code-Beispiel ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// HomeController.cs&lt;br /&gt;
namespace ControllersExample.Controllers&lt;br /&gt;
{&lt;br /&gt;
    [Controller] // Markiert die Klasse als Controller&lt;br /&gt;
    public class HomeController : Controller&lt;br /&gt;
    {&lt;br /&gt;
        [Route(&amp;quot;home&amp;quot;)] // Route für diese Action&lt;br /&gt;
        public string Index()&lt;br /&gt;
        {&lt;br /&gt;
            return &amp;quot;Hello from Index&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        [Route(&amp;quot;contact-us/{mobile:regex(^\\d{10}$)}&amp;quot;)] // Route mit Constraint&lt;br /&gt;
        public string Contact()&lt;br /&gt;
        {&lt;br /&gt;
            return &amp;quot;Hello from Contact&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einrichtung in Program.cs ==&lt;br /&gt;
Um Controller zu verwenden, müssen sie registriert und dem Routing-System hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
var builder = WebApplication.CreateBuilder(args);&lt;br /&gt;
builder.Services.AddControllers(); // Aktiviert MVC Controller&lt;br /&gt;
&lt;br /&gt;
var app = builder.Build();&lt;br /&gt;
app.UseRouting();&lt;br /&gt;
app.MapControllers(); // Verbindet Controller mit dem Routing-System&lt;br /&gt;
app.Run();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= IActionResult =&lt;br /&gt;
Das `IActionResult` Interface ist ein Kernkonzept in ASP.NET Core MVC. Es dient als Rückgabetyp für Action Methods und ermöglicht es, je nach Kontext der Anfrage unterschiedliche Arten von Antworten zurückzugeben.&lt;br /&gt;
&lt;br /&gt;
Es definiert einen Vertrag mit einer einzigen Methode:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Task ExecuteResultAsync(ActionContext context);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rückgabetypen (Action Results) ==&lt;br /&gt;
Hier sind die wichtigsten von `IActionResult` abgeleiteten Ergebnistypen:&lt;br /&gt;
&lt;br /&gt;
=== ContentResult ===&lt;br /&gt;
Gibt rohen Inhalt (Text, HTML, JSON, etc.) zurück, ohne eine View zu rendern.&lt;br /&gt;
* **Einsatz**: Einfache Textnachrichten, API-Antworten oder benutzerdefinierte Formate.&lt;br /&gt;
* **Eigenschaften**: `Content` (Inhalt), `ContentType` (MIME-Type, z.B. `text/html`).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// Verwendung der Helper-Methode&lt;br /&gt;
public ContentResult Index()&lt;br /&gt;
{&lt;br /&gt;
    return Content(&amp;quot;&amp;lt;h1&amp;gt;Welcome&amp;lt;/h1&amp;gt;&amp;quot;, &amp;quot;text/html&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JsonResult ===&lt;br /&gt;
Serialisiert ein Objekt in JSON-Format und gibt es zurück.&lt;br /&gt;
* **Einsatz**: RESTful APIs, AJAX-Antworten.&lt;br /&gt;
* **ContentType**: Setzt automatisch `application/json`.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public JsonResult Person()&lt;br /&gt;
{&lt;br /&gt;
    var person = new { FirstName = &amp;quot;James&amp;quot;, LastName = &amp;quot;Smith&amp;quot;, Age = 25 };&lt;br /&gt;
    return Json(person); // Helper-Methode&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FileResult ===&lt;br /&gt;
Dient zum Senden von Dateien (PDF, Bilder, Dokumente) an den Client.&lt;br /&gt;
&lt;br /&gt;
;VirtualFileResult&lt;br /&gt;
: Dient Dateien aus dem Web-Root (`wwwroot`) oder einem virtuellen Pfad.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
return File(&amp;quot;/sample.pdf&amp;quot;, &amp;quot;application/pdf&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;PhysicalFileResult&lt;br /&gt;
: Dient Dateien von einem absoluten physischen Pfad auf dem Server. **Vorsicht**: Sicherheit beachten!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
return PhysicalFile(@&amp;quot;c:\aspnetcore\sample.pdf&amp;quot;, &amp;quot;application/pdf&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;FileContentResult&lt;br /&gt;
: Dient Dateien aus einem Byte-Array im Speicher.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
byte[] bytes = System.IO.File.ReadAllBytes(@&amp;quot;c:\sample.pdf&amp;quot;);&lt;br /&gt;
return File(bytes, &amp;quot;application/pdf&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Status Code Results ===&lt;br /&gt;
Ermöglicht das Senden standardisierter HTTP-Statuscodes, um den Client über das Ergebnis der Anfrage zu informieren.&lt;br /&gt;
&lt;br /&gt;
* **OkResult (200)**: Erfolgreiche Anfrage.&lt;br /&gt;
* **BadRequestResult (400)**: Client-Fehler, z.B. ungültige Eingabe.&lt;br /&gt;
* **NotFoundResult (404)**: Ressource nicht gefunden.&lt;br /&gt;
* **UnauthorizedResult (401)**: Authentifizierung erforderlich.&lt;br /&gt;
* **StatusCodeResult**: Jeder beliebige Statuscode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public IActionResult GetBook(int id)&lt;br /&gt;
{&lt;br /&gt;
    if (id &amp;lt;= 0)&lt;br /&gt;
    {&lt;br /&gt;
        return BadRequest(&amp;quot;Invalid ID&amp;quot;); // 400&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if (id &amp;gt; 1000)&lt;br /&gt;
    {&lt;br /&gt;
        return NotFound(&amp;quot;Book not found&amp;quot;); // 404&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return Ok(); // 200&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redirect Results ===&lt;br /&gt;
Leitet den Browser zu einer anderen URL um.&lt;br /&gt;
&lt;br /&gt;
;RedirectResult&lt;br /&gt;
: Leitet zu einer URL weiter (absolut oder relativ).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
return Redirect(&amp;quot;/home&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;RedirectToActionResult&lt;br /&gt;
: Leitet zu einer spezifischen Action in einem Controller weiter.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
return RedirectToAction(&amp;quot;Index&amp;quot;, &amp;quot;Home&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;LocalRedirectResult&lt;br /&gt;
: Leitet zu einer lokalen URL innerhalb der Anwendung weiter (Schutz vor Open Redirects).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
return LocalRedirect(&amp;quot;/products/details/1&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Statuscodes für Redirects ====&lt;br /&gt;
* **302 Found (Temporär)**: Standard. Ressource ist vorübergehend unter neuer URL.&lt;br /&gt;
* **301 Moved Permanently**: Ressource wurde dauerhaft verschoben.&lt;br /&gt;
  * Verwendung: `RedirectPermanent`, `RedirectToActionPermanent`, `LocalRedirectPermanent`.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).&amp;#039;&amp;#039;&lt;/div&gt;</summary>
		<author><name>Thorsten</name></author>
	</entry>
</feed>