Validator
Eintrag zuletzt aktualisiert am: 11.01.2024
Validator ist eine Klasse im
.NET-Namensraum
System.ComponentModel.Data
Annotations. Sie dient dazu, zu überprüfen, ob ein konkretes
Objekt in der zugehörigen Klasse festgelegt Bedingungen erfüllt. Diese Bedingungen definiert man in Form von Validierungsannotationen, z.B. [RegularExpression], [Compare], [Range], [Phone] und [CreditCard] sowie [AllowedValues].
Es gibt
GUI-
Steuerelemente, die die
Annotationen berücksichtigen, z.B. <InputText>, <InputNumber> und <InputDate> in
Blazor.
Eine Validierung kann man auch unabhängig von einem
Steuerelement im Programmcode ausführen. Dazu gibt es die Klassen ValidationContext, Validator, ValidationResult und Validation
Exception
Beispiel
using
System.ComponentModel.Data
Annotations;
using ITVisions;
namespace NET8Konsole.
FCL;
public class SoftwareDeveloper
{
[Required(DisallowAllDefaultValues = true)] // 00000000-0000-0000-0000-000000000000 verboten
public Guid PersonGuid { get; set; }
[Required(DisallowAllDefaultValues = true)] // 01.01.0001 verboten
public DateTime Geburtsdatum { get; set; }
[Range(0d, 120d, MinimumIsExclusive = true, MaximumIsExclusive = true)] // Alter >0 und < 120
public double Alter { get; set; }
[AllowedValues("", "Dr.", "Prof. Dr.")] // nur diese Anreden erlaubt
public string? Anrede { get; set; }
[Length(2, 50)] // Name mindestens 2, maximal 50 Zeichen
public string? Name { get; set; }
[Length(0, 3)] // bis zu 3 Websites
public List<string> Websites { get; set; } = new();
[Base64String] // muss Base64 sein --> ist natürlich kein Schutz --> nur ein Beispiel ;-)
public string? Kennwort { get; set; }
}
public class NET8
AnnotationsDemo
{
public void Run()
{
CUI.H2(nameof(NET8
AnnotationsDemo));
var hs = new SoftwareDeveloper() { Name = "
Dr. Holger Schwichtenberg", Anrede = "Dr", Kennwort = "geheim" };
hs.Websites.Add("www.IT-Visions.de");
hs.Websites.Add("www.dotnet-doktor.de");
hs.Websites.Add("www.entwickler-lexikon.de");
hs.Websites.Add("www.dotnet7.de");
hs.Websites.Add("www.dotnet8.de");
// Validierung durchführen
var ctx = new ValidationContext(hs);
var results = new
System.Collections.
Generic.List<ValidationResult>();
if (!Validator.TryValidateObject(hs, ctx, results, true))
{
// Fehler ausgeben
foreach (var validationResult in results)
{
CUI.Warning(validationResult.ErrorMessage);
}
}
else
{
// Es war alles OK
CUI.Success("Validation successful!");
}
}
}
Beim Ausführen des Programmcodes kommt es zu diesen sechs Validierungsfehlern:
1. The PersonGuid field is required.
2. The Geburtsdatum field is required.
3. The field Alter must be between 0 exclusive and 120 exclusive.
4. The Anrede field does not equal any of the values specified in AllowedValues
Attribute.
5. The field Websites must be a string or collection type with a minimum length of '0' and maximum length of '3'.
6. The Kennwort field is not a valid Base64 encoding.