FluentValidation für C# (.NET): Vollständige Anleitung mit Beispielen

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

Was ist FluentValidation und wozu wird es benötigt?

\n\n

FluentValidation ist eine beliebte Bibliothek für .NET, die für die Erstellung strenger und lesbarer Validierungsregeln für Geschäftsobjekte entwickelt wurde. Im Gegensatz zu den integrierten Validierungsattributen (Data Annotations) bietet FluentValidation einen Ansatz, der auf der Trennung von Validierungslogik und Datenmodell basiert. Dies macht den Code sauberer, testbarer und flexibler.

\n\n

Die Bibliothek verwendet eine "fließende Schnittstelle" (Fluent Interface), die es ermöglicht, Validierungsregelketten mit Punktnotation zu erstellen. FluentValidation unterstützt komplexe Szenarien: kaskadierende Validierungen, bedingte Regeln, benutzerdefinierte Validatoren, die Arbeit mit Listen und verschachtelten Objekten.

\n\n

Wozu wird FluentValidation benötigt?

\n
    \n
  • Trennung der Verantwortlichkeiten: Validierungsregeln verunreinigen das Datenmodell nicht.
  • \n
  • Lesbarkeit: Regelketten sind leicht zu lesen und zu warten.
  • \n
  • Flexibilität: Einfache Erstellung komplexer, bedingter und zusammengesetzter Regeln.
  • \n
  • Testbarkeit: Validatoren können wie normale Klassen getestet werden.
  • \n
  • Integration: Hervorragende Integration mit ASP.NET Core, MVC, Web API und anderen Frameworks.
  • \n
\n\n

Installation von FluentValidation

\n\n

Die Installation der Bibliothek erfolgt über den NuGet-Paketmanager. Führen Sie einen der folgenden Befehle in der Paket-Manager-Konsole oder im .NET CLI-Terminal aus:

\n\n
// Installation über die Paket-Manager-Konsole\nInstall-Package FluentValidation\n\n// Installation über .NET CLI\ndotnet add package FluentValidation
\n\n

Für die Integration mit ASP.NET Core wird zusätzlich das folgende Paket benötigt:

\n\n
dotnet add package FluentValidation.AspNetCore
\n\n

Schnellstart: Codebeispiel

\n\n

Angenommen, wir haben ein Benutzermodell:

\n\n
public class User\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public string Email { get; set; }\n    public int Age { get; set; }\n    public string Password { get; set; }\n    public string ConfirmPassword { get; set; }\n}
\n\n

Wir erstellen einen Validator, indem wir von AbstractValidator<User> erben:

\n\n
using FluentValidation;\n\npublic class UserValidator : AbstractValidator<User>\n{\n    public UserValidator()\n    {\n        RuleFor(user => user.Name)\n            .NotEmpty().WithMessage("Name ist erforderlich")\n            .Length(2, 50).WithMessage("Name muss zwischen 2 und 50 Zeichen lang sein");\n\n        RuleFor(user => user.Email)\n            .NotEmpty().WithMessage("E-Mail ist erforderlich")\n            .EmailAddress().WithMessage("Ungültiges E-Mail-Format");\n\n        RuleFor(user => user.Age)\n            .InclusiveBetween(18, 120).WithMessage("Alter muss zwischen 18 und 120 Jahren liegen");\n\n        RuleFor(user => user.Password)\n            .NotEmpty().WithMessage("Passwort ist erforderlich")\n            .MinimumLength(6).WithMessage("Passwort muss mindestens 6 Zeichen enthalten");\n\n        RuleFor(user => user.ConfirmPassword)\n            .Equal(user => user.Password).WithMessage("Passwörter stimmen nicht überein");\n    }\n}
\n\n

Verwendung des Validators:

\n\n
var validator = new UserValidator();\nvar user = new User\n{\n    Name = "A",\n    Email = "invalid-email",\n    Age = 15,\n    Password = "123",\n    ConfirmPassword = "456"\n};\n\nvar result = validator.Validate(user);\n\nif (!result.IsValid)\n{\n    foreach (var error in result.Errors)\n    {\n        Console.WriteLine($"Eigenschaft: {error.PropertyName}, Fehler: {error.ErrorMessage}");\n    }\n}
\n\n

Wichtige Methoden von FluentValidation

\n\n

Nachfolgend werden die wichtigsten Methoden der Bibliothek mit detaillierter Beschreibung und Beispielen vorgestellt.

\n\n

1. RuleFor()

\n

Was es tut: Definiert eine Validierungsregel für eine bestimmte Eigenschaft eines Objekts. Dies ist die Hauptmethode, mit der alles beginnt.

Empfehlungen