Validierung mit Data Annotations
Validieren Sie Modelle mit Attributen.
Validierung mit Data Annotations ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist die Validierung mit Data Annotations?
Data Annotations sind Attribute, die Sie auf Modelleigenschaften platzieren, um Validierungsregeln direkt in Ihren C#-Klassen zu deklarieren. ASP.NET Core liest diese Attribute während des Model Bindings und validiert eingehende Anfragen automatisch.
Sie befinden sich im Namespace System.ComponentModel.DataAnnotations.
using System.ComponentModel.DataAnnotations;
public class RegisterRequest
{
[Required]
public string Username { get; set; }
}Das Attribut [Required]
[Required] stellt sicher, dass eine Eigenschaft nicht null ist (und standardmäßig keine leere Zeichenfolge enthält). Wenn der Client das Feld nicht übermittelt, schlägt die Modellvalidierung fehl, bevor Ihre Action ausgeführt wird.
Sie können die Meldung mit ErrorMessage anpassen.
public class RegisterRequest
{
[Required(ErrorMessage = "Username is required.")]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}Zahlen mit [Range] validieren
[Range] beschränkt einen numerischen Wert auf ein einschließlich geltendes Minimum und Maximum. Das Attribut funktioniert mit int, double, decimal und weiteren Typen.
Verwenden Sie es für Alter, Mengen, Bewertungen und jede andere begrenzte Zahl.
public class ProductRequest
{
[Range(1, 1000, ErrorMessage = "Quantity must be between 1 and 1000.")]
public int Quantity { get; set; }
[Range(0.01, 9999.99)]
public decimal Price { get; set; }
}E-Mail-Adressen mit [EmailAddress] validieren
[EmailAddress] prüft, ob eine Zeichenfolge wie eine gültige E-Mail-Adresse aussieht. Kombinieren Sie es mit [Required], damit das Feld sowohl vorhanden als auch korrekt formatiert ist.
public class ContactRequest
{
[Required]
[EmailAddress(ErrorMessage = "Please enter a valid email.")]
public string Email { get; set; }
}Längenbeschränkungen für Zeichenfolgen
[StringLength] legt eine maximale und optional eine minimale Länge für Text fest. [MinLength] und [MaxLength] sind einfachere Alternativen.
public class RegisterRequest
{
[Required]
[StringLength(20, MinimumLength = 3)]
public string Username { get; set; }
[MaxLength(500)]
public string Bio { get; set; }
}Musterabgleich mit [RegularExpression]
[RegularExpression] validiert eine Zeichenfolge anhand eines Regex-Musters. Das ist ideal für Formate wie Telefonnummern, Postleitzahlen oder Slugs.
public class ProfileRequest
{
[RegularExpression(@"^[a-z0-9-]+$",
ErrorMessage = "Slug may only contain lowercase letters, digits and dashes.")]
public string Slug { get; set; }
}Zwei Felder mit [Compare] vergleichen
[Compare] stellt sicher, dass eine Eigenschaft mit einer anderen übereinstimmt. Der klassische Anwendungsfall ist die Bestätigung eines Passworts.
public class RegisterRequest
{
[Required]
public string Password { get; set; }
[Compare(nameof(Password), ErrorMessage = "Passwords do not match.")]
public string ConfirmPassword { get; set; }
}So meldet ModelState Fehler
Wenn die Validierung fehlschlägt, füllt ASP.NET Core ModelState mit den Fehlern. In einem mit [ApiController] versehenen API-Controller geben ungültige Anfragen automatisch eine 400-Antwort zurück, sodass Sie ModelState nur selten manuell prüfen müssen.
[ApiController]
[Route("api/[controller]")]
public class AccountController : ControllerBase
{
[HttpPost("register")]
public IActionResult Register(RegisterRequest request)
{
// [ApiController] already returned 400 if invalid
return Ok("Registered " + request.Username);
}
}Manuelle ModelState-Prüfungen
Ohne [ApiController] (beispielsweise in MVC-Controllern) prüfen Sie ModelState.IsValid selbst und entscheiden, wie Sie antworten.
public IActionResult Register(RegisterRequest request)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Ok();
}Mehrere Annotationen kombinieren
Annotationen werden kombiniert. Eine einzelne Eigenschaft kann mehrere Attribute tragen, und alle müssen erfolgreich sein. Die Reihenfolge ist für die Auswertung unerheblich, Sie sollten sie jedoch übersichtlich anordnen.
public class SignupRequest
{
[Required]
[EmailAddress]
[StringLength(254)]
public string Email { get; set; }
[Required]
[Range(18, 120, ErrorMessage = "Must be 18 or older.")]
public int Age { get; set; }
}Wann Data Annotations nicht ausreichen
Data Annotations eignen sich hervorragend für einfache, deklarative Regeln. Logik über mehrere Eigenschaften hinweg, Datenbankabfragen oder bedingte Regeln ("nur erforderlich, wenn X") werden jedoch schnell umständlich. Hier kommt FluentValidation ins Spiel, das wir als Nächstes behandeln.
Kurzer Check
Testen Sie Ihr Verständnis von Data Annotations.
Zusammenfassung
Sie haben gelernt, dass Data Annotations Validierungsregeln als Attribute deklarieren: [Required] für das Vorhandensein, [Range] für numerische Grenzen, [EmailAddress] für das E-Mail-Format sowie [StringLength], [RegularExpression] und [Compare]. Mit [ApiController] führen Fehler über ModelState automatisch zu einer 400-Antwort. Für komplexe Regeln verwenden Sie als Nächstes FluentValidation.
Häufig gestellte Fragen
Ist die Lektion „Validierung mit Data Annotations“ kostenlos?
Ja — der vollständige Text von „Validierung mit Data Annotations“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Validierung mit Data Annotations“?
Validieren Sie Modelle mit Attributen. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C# Academy zu starten?
Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Validierung mit Data Annotations“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?
Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Validierung mit Data Annotations
- FluentValidation-Regeln
- Benutzerdefinierte und bedingte Regeln
- Validierung in APIs integrieren