Benutzerdefinierte Validierung unter ASP.NET MVC 👍 👎

Sehr praktisch unter ASP.NET MVC sind Attribute zur Validierung in Models. Standardmäßig bietet das .NET-Framework im Namensraum System.ComponentModel.DataAnnotations beispielsweise die Attribute Range, Required und StringLength, deren Verwendung wohl selbsterklärend sein dürfte.

Manchmal benötigt man jedoch etwas speziellere Validierungen und möchte naheliegenderweise dennoch auf eine einheitliche Vorgehensweise setzen. Hierfür steht das (abstrakte) Attribut Validation zur Verfügung, von welchem wir eine konkrete Implementierung für unser Vorhaben ableiten können.

Für unser Beispiel möchten wir ein Attribut zur Validierung implementieren, welches angibt, dass ein Feld (üblicherweise indirekt aus einem Formular vom Benutzer befüllt) mindestens eine Ziffer, zwei Großbuchstaben und drei Kleinbuchstaben enthalten muss. Wir halten es bewusst einfach, um uns auf den Kontext zu konzentrieren:
Benutzerdefiniertes Attribut zur Validierung implementieren
010203040506070809101112131415161718
[AttributeUsage(AttributeTargets.Property)]public class PasswordAttribute : ValidationAttribute {    public override bool IsValid(object value) {        string val = value as string;
if(!String.IsNullOrWhiteSpace(val)) { return ( val.Count(c => Char.IsDigit(c)) >= 1 && val.Count(c => Char.IsUpper(c)) >= 2 && val.Count(c => Char.IsLower(c)) >= 3 ); } else { return false; } }}
Dies ist eine sehr grundlegende Implementierung, die sich durchaus noch erweitern (und optimieren) lässt. Grundsätzlich genügt dieses Vorgehen jedoch bereits, um Verwendung zu finden. Das Attribut wird dazu wie üblich über der entsprechenden Eigenschaft der Model-Klasse deklariert:
Benutzerdefiniertes Attribut zur Validierung verwenden
01020304050607
public class User {    [Password]    public string Password {        get;        set;    }}
Eine allgemeine Einführung zum MVC-Framework möchte ich gerne in einem späteren Beitrag liefern.


Projektverweise

Kategorien / Archiv  |  Übersicht RSS-Feed

Schlagworte

Suche