<?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%2FModel_Binding_und_Validation</id>
	<title>Webframeworkk/ASP.NET Core/Model Binding und Validation - 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%2FModel_Binding_und_Validation"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Model_Binding_und_Validation&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/Model_Binding_und_Validation&amp;diff=259&amp;oldid=prev</id>
		<title>imported&gt;Import: Version 184</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Model_Binding_und_Validation&amp;diff=259&amp;oldid=prev"/>
		<updated>2026-02-17T14:11:38Z</updated>

		<summary type="html">&lt;p&gt;Version 184&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;
Basierend auf der Analyse der Datei &amp;#039;&amp;#039;Text.txt&amp;#039;&amp;#039; bietet dieses Tutorial einen umfassenden Überblick über Model Binding und Validierung in ASP.NET Core MVC.&lt;br /&gt;
&lt;br /&gt;
== 1. Einführung in Model Binding ==&lt;br /&gt;
&lt;br /&gt;
Model Binding ist eine leistungsstarke Funktion in ASP.NET Core MVC, die den Prozess der Datenextraktion aus verschiedenen Teilen einer HTTP-Anfrage (Formulardaten, Routenwerte, Query Strings) automatisiert und in stark typisierte C#-Objekte konvertiert, die direkt in Action-Methoden verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
=== Wann wird Model Binding ausgeführt? ===&lt;br /&gt;
&lt;br /&gt;
Es findet statt, &amp;#039;&amp;#039;&amp;#039;nachdem&amp;#039;&amp;#039;&amp;#039; das Routing bestimmt hat, welche Action-Methode aufgerufen werden soll. Das System versucht dann, die Parameter dieser Methode mit Werten aus der eingehenden Anfrage zu füllen.&lt;br /&gt;
&lt;br /&gt;
=== Reihenfolge des Model Bindings ===&lt;br /&gt;
&lt;br /&gt;
ASP.NET Core sucht in einer spezifischen Reihenfolge nach Datenquellen:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Form Data (POST requests)&amp;#039;&amp;#039;&amp;#039;: Werte aus HTML-Formularen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Route Data&amp;#039;&amp;#039;&amp;#039;: Werte aus der URL-Routen-Vorlage (z.B. /products/{id}).&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Query String&amp;#039;&amp;#039;&amp;#039;: Werte, die an die URL angehängt sind (nach dem ?).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 2. Datenquellen im Detail ==&lt;br /&gt;
&lt;br /&gt;
=== Query Strings ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Zweck&amp;#039;&amp;#039;&amp;#039;: Übergabe von Parametern über die URL (z.B. Filtern, Sortieren).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Syntax&amp;#039;&amp;#039;&amp;#039;: ?key1=value1&amp;amp;amp;key2=value2&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Best Practices&amp;#039;&amp;#039;&amp;#039;: Keine sensiblen Daten (Passwörter), einfache Namen verwenden, Input validieren.&lt;br /&gt;
&lt;br /&gt;
=== Route Data ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Zweck&amp;#039;&amp;#039;&amp;#039;: Erfassen dynamischer Werte aus der URL.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Syntax&amp;#039;&amp;#039;&amp;#039;: /products/{id}, wobei &amp;#039;&amp;#039;id&amp;#039;&amp;#039; ein Routenparameter ist.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Best Practices&amp;#039;&amp;#039;&amp;#039;: Klare Namen wählen, Constraints verwenden (z.B. int, guid).&lt;br /&gt;
&lt;br /&gt;
=== URL Encoding ===&lt;br /&gt;
&lt;br /&gt;
Spezielle Zeichen in URLs müssen encodiert werden (z.B. Leerzeichen als %20). Dies stellt sicher, dass URLs korrekt übertragen und interpretiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 3. Explizite Binding-Attribute ==&lt;br /&gt;
&lt;br /&gt;
Obwohl das automatische Binding oft ausreicht, können Sie mit Attributen genau steuern, woher die Daten kommen sollen.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[FromQuery]&amp;#039;&amp;#039;&amp;#039;: Weist den Model Binder an, den Wert ausschließlich aus dem Query String zu holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;public IActionResult Index([FromQuery] int page) { ... }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[FromRoute]&amp;#039;&amp;#039;&amp;#039;: Weist den Model Binder an, den Wert aus den Routendaten zu holen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;[Route(&amp;quot;products/{id}&amp;quot;)]&lt;br /&gt;
public IActionResult Details([FromRoute] int id) { ... }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[FromHeader]&amp;#039;&amp;#039;&amp;#039;: Bindet Parameter direkt aus HTTP-Headern (z.B. User-Agent).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;public IActionResult Index([FromHeader(Name = &amp;quot;User-Agent&amp;quot;)] string userAgent) { ... }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[FromBody]&amp;#039;&amp;#039;&amp;#039;: Wird verwendet, um komplexe Objekte aus dem Request Body zu binden (z.B. JSON oder XML). Dies ist besonders wichtig für APIs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;public IActionResult Create([FromBody] Person person) { ... }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 4. Model Validierung ==&lt;br /&gt;
&lt;br /&gt;
Model Validation prüft, ob die empfangenen Daten den definierten Kriterien entsprechen. Dies ist entscheidend für Sicherheit und Datenintegrität.&lt;br /&gt;
&lt;br /&gt;
=== Data Annotations ===&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie Attribute aus &amp;#039;&amp;#039;System.ComponentModel.DataAnnotations&amp;#039;&amp;#039; direkt in Ihren Modellklassen:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[Required]&amp;#039;&amp;#039;&amp;#039;: Feld darf nicht null oder leer sein.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[StringLength]&amp;#039;&amp;#039;&amp;#039;: Beschränkt die Länge eines Strings.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[Range]&amp;#039;&amp;#039;&amp;#039;: Definiert einen numerischen Bereich.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[EmailAddress]&amp;#039;&amp;#039;&amp;#039;: Prüft auf gültiges E-Mail-Format.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[Phone]&amp;#039;&amp;#039;&amp;#039;: Prüft auf Telefonnummer-Format.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[Compare]&amp;#039;&amp;#039;&amp;#039;: Vergleicht zwei Eigenschaften (z.B. Passwort und Bestätigung).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[Url]&amp;#039;&amp;#039;&amp;#039;: Prüft auf gültige URL.&lt;br /&gt;
&lt;br /&gt;
=== ModelState ===&lt;br /&gt;
&lt;br /&gt;
In Ihren Controller-Actions können Sie &amp;lt;code&amp;gt;ModelState.IsValid&amp;lt;/code&amp;gt; prüfen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;public IActionResult Create(Person person)&lt;br /&gt;
{&lt;br /&gt;
    if (!ModelState.IsValid)&lt;br /&gt;
    {&lt;br /&gt;
        return View(person); // Fehler anzeigen&lt;br /&gt;
    }&lt;br /&gt;
    // Speichern...&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Fortgeschrittene Validierung ===&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Custom Validation Attributes&amp;#039;&amp;#039;&amp;#039;: Erben Sie von &amp;lt;code&amp;gt;ValidationAttribute&amp;lt;/code&amp;gt;, um eigene Regeln zu erstellen (z.B. DateRangeValidator oder MinimumYearValidator). Man überschreibt dabei die &amp;lt;code&amp;gt;IsValid&amp;lt;/code&amp;gt;-Methode.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;IValidatableObject&amp;#039;&amp;#039;&amp;#039;: Für Validierung, die mehrere Eigenschaften betrifft (Cross-Property Validation), kann das Modell dieses Interface implementieren. Die &amp;lt;code&amp;gt;Validate&amp;lt;/code&amp;gt;-Methode wird aufgerufen, nachdem die Property-Level-Validierungen durchgelaufen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 5. Steuerung des Bindings ==&lt;br /&gt;
&lt;br /&gt;
=== [Bind] und [BindNever] ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[Bind]&amp;#039;&amp;#039;&amp;#039;: Gibt explizit an, welche Properties gebunden werden sollen (Whitelist). Schützt vor Overposting-Attacken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;public IActionResult Create([Bind(&amp;quot;Title&amp;quot;, &amp;quot;Description&amp;quot;)] Product product)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[BindNever]&amp;#039;&amp;#039;&amp;#039;: Schließt spezifische Properties vom Binding aus (Blacklist). Wird direkt an der Model-Property notiert.&lt;br /&gt;
&lt;br /&gt;
=== Collection Binding ===&lt;br /&gt;
&lt;br /&gt;
ASP.NET Core kann Listen und Arrays binden (List&amp;amp;lt;T&amp;amp;gt;, T[]). Das Namensschema im Request muss passen:&lt;br /&gt;
&lt;br /&gt;
* Indiziert: items[0], items[1]&lt;br /&gt;
* Gleicher Name: items, items&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== 6. Erweiterte Themen ==&lt;br /&gt;
&lt;br /&gt;
=== Input Formatters ===&lt;br /&gt;
&lt;br /&gt;
Verantwortlich für das Deserialisieren des Request Body (z.B. JSON zu C#-Objekt).&lt;br /&gt;
&lt;br /&gt;
* Standardmäßig ist &amp;#039;&amp;#039;NewtonsoftJsonInputFormatter&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;SystemTextJsonInputFormatter&amp;#039;&amp;#039; aktiv.&lt;br /&gt;
* Für XML kann &amp;#039;&amp;#039;XmlSerializerInputFormatter&amp;#039;&amp;#039; konfiguriert werden (&amp;lt;code&amp;gt;.AddXmlSerializerFormatters()&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Custom Model Binders ===&lt;br /&gt;
&lt;br /&gt;
Wenn das Standardverhalten nicht ausreicht, können Sie eigene Model Binder erstellen, indem Sie &amp;lt;code&amp;gt;IModelBinder&amp;lt;/code&amp;gt; implementieren.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;BindModelAsync&amp;#039;&amp;#039;&amp;#039;: Enthält die Logik zum Auslesen der Daten aus dem &amp;lt;code&amp;gt;bindingContext&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Ein &amp;lt;code&amp;gt;IModelBinderProvider&amp;lt;/code&amp;gt; wird benötigt, um den Binder zu registrieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Model Binding&amp;#039;&amp;#039;&amp;#039; automatisiert die Datenannahme und Typkonvertierung.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Validierung&amp;#039;&amp;#039;&amp;#039; stellt sicher, dass nur korrekte Daten verarbeitet werden (&amp;lt;code&amp;gt;ModelState.IsValid&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Nutzen Sie &amp;#039;&amp;#039;&amp;#039;Attribute&amp;#039;&amp;#039;&amp;#039; ([FromQuery], [FromBody], etc.) für explizite Kontrolle.&lt;br /&gt;
# Sicherheit ist Priorität: Validieren und sanitisieren Sie immer alle Inputs.&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>imported&gt;Import</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Model_Binding_und_Validation&amp;diff=3199&amp;oldid=prev</id>
		<title>Thorsten: Die Seite wurde neu angelegt: „ Basierend auf der Analyse der Datei &#039;&#039;Text.txt&#039;&#039; bietet dieses Tutorial einen umfassenden Überblick über Model Binding und Validierung in ASP.NET Core MVC.  == 1. Einführung in Model Binding == Model Binding ist eine leistungsstarke Funktion in ASP.NET Core MVC, die den Prozess der Datenextraktion aus verschiedenen Teilen einer HTTP-Anfrage (Formulardaten, Routenwerte, Query Strings) automatisiert und in stark typisierte C#-Objekte konvertiert, die di…“</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Model_Binding_und_Validation&amp;diff=3199&amp;oldid=prev"/>
		<updated>2026-02-17T14:11:38Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „ Basierend auf der Analyse der Datei &amp;#039;&amp;#039;Text.txt&amp;#039;&amp;#039; bietet dieses Tutorial einen umfassenden Überblick über Model Binding und Validierung in ASP.NET Core MVC.  == 1. Einführung in Model Binding == Model Binding ist eine leistungsstarke Funktion in ASP.NET Core MVC, die den Prozess der Datenextraktion aus verschiedenen Teilen einer HTTP-Anfrage (Formulardaten, Routenwerte, Query Strings) automatisiert und in stark typisierte C#-Objekte konvertiert, die di…“&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.wissen-ahrensburg.de/index.php?title=Webframeworkk/ASP.NET_Core/Model_Binding_und_Validation&amp;amp;diff=3199&amp;amp;oldid=259&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Thorsten</name></author>
	</entry>
</feed>