Datenvalidierung in C# (.NET): Bibliotheken und Ansätze

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Datenvalidierung in C# (.NET): Vollständiger Leitfaden mit Beispielen



Datenvalidierung ist einer der Schlüsselaspekte bei der Entwicklung zuverlässiger Anwendungen in C# im .NET-Ökosystem. Sie stellt sicher, dass eingehende Daten den festgelegten Regeln entsprechen, und verhindert so Fehler, Sicherheitslücken und einen inkorrekten Systemzustand. In diesem Artikel werden wir die wichtigsten Bibliotheken und Werkzeuge zur Validierung in .NET im Detail besprechen, einschließlich integrierter Mechanismen und beliebter Drittanbieterlösungen.



Warum ist Datenvalidierung wichtig?

Ohne Validierung kann eine Anwendung Folgendes erhalten:

  • Inkorrekte Datentypen (z. B. eine Zeichenfolge anstelle einer Zahl).
  • Überschreitung zulässiger Bereiche (negatives Alter, nicht existierende E-Mail).
  • SQL-Injection, XSS-Angriffe und andere Sicherheitsbedrohungen.
  • Verletzung der Geschäftslogik (Bestellung ohne Artikel, leerer Benutzername).

Die Verwendung strukturierter Ansätze zur Validierung macht den Code sauberer, testbarer und sicherer.



1. Integrierte Validierung: Data Annotations (System.ComponentModel.DataAnnotations)

Der einfachste und gebräuchlichste Weg ist die Verwendung von Attributen aus dem Namespace System.ComponentModel.DataAnnotations. Diese Methode eignet sich ideal für Modelle in ASP.NET Core MVC, Web API und Entity Framework.



Beispiel eines Modells mit Attributen:

using System.ComponentModel.DataAnnotations;

public class User{ [Required(ErrorMessage = "Name ist erforderlich")] [StringLength(50, MinimumLength = 2, ErrorMessage = "Der Name muss zwischen 2 und 50 Zeichen lang sein")] public string Name { get; set; }

[Required] [EmailAddress(ErrorMessage = "Ungültige E-Mail")] public string Email { get; set; }

[Range(1, 120, ErrorMessage = "Das Alter muss zwischen 1 und 120 liegen")] public int Age { get; set; }

[Phone(ErrorMessage = "Ungültige Telefonnummer")] public string Phone { get; set; }}


Programmatische Überprüfung des Modells:

var user = new User { Name = "A", Email = "invalid", Age = 200 };var context = new ValidationContext(user);var results = new List<ValidationResult>();

bool isValid = Validator.TryValidateObject(user, context, results, true);

if (!isValid){ foreach (var error in results) { Console.WriteLine(error.ErrorMessage); }}


Vorteile: Einfachheit, integrierte Unterstützung in ASP.NET Core, automatische Validierung auf Controllerebene.

Nachteile: Eingeschränkte Flexibilität, Attribute sind fest an das Modell gebunden, komplexe Geschäftsregeln sind schwer umsetzbar.



2. FluentValidation – Flexible und ausdrucksstarke Validierung

Die Bibliothek FluentValidation ist das beliebteste Drittanbieter-Tool für die Validierung in .NET. Sie ermöglicht es, Validierungsregeln in separate Klassen auszulagern, unterstützt Methodenverkettung, benutzerdefinierte Nachrichten und komplexe Bedingungen.



Installation über NuGet: Install-Package FluentValidation



Beispiel eines Validators:

using FluentValidation;

public class UserValidator : AbstractValidator<User>{ public UserValidator() { RuleFor(u => u.Name) .NotEmpty().WithMessage("Der Name darf nicht leer sein") .Length(2, 50).WithMessage("Die Namenslänge muss zwischen 2 und 50 Zeichen liegen");

RuleFor(u => u.Email) .NotEmpty() .EmailAddress().WithMessage("Ungültiges E-Mail-Format");

RuleFor(u => u.Age) .InclusiveBetween(1, 120).WithMessage("Alter außerhalb des Bereichs");

// Benutzerdefinierte Regel RuleFor(u => u.Phone) .Matches(@"^\\+?[1-9]\\d{1,14}$").When(u => !string.IsNullOrEmpty(u.Phone)) .WithMessage("Telefonnummer im internationalen Format"); }}


Verwendung

Empfehlungen