This article has been localized into German by the community.
Typen von Modellvalidierungs-datenanmerkungen
Im letzten Artikel haben wir die Modellvalidierung vorgestellt und Ihnen gezeigt, wie einfach der Einstieg ist. Wir haben einige validierungsbezogene Datenanmerkungen verwendet, z.B.: [Required] und [StringLength]. Wie bereits erwähnt, gibt es jedoch einige andere Typen. In diesem Artikel werde ich sie alle durchgehen, um Ihnen einen besseren Überblick über alle Möglichkeiten zu geben.
[Required]
Gibt an, dass für diese Eigenschaft ein Wert angegeben werden muss. Beachten Sie, dass nicht nullfähige Werttypen (z.B.: Ganzzahlen und Datum/Uhrzeit) immer erforderlich sind und Sie daher das Attribut [Required] nicht hinzufügen müssen. Bei Strings sollten Sie beachten, dass ein leerer Wert wie ein NULL-Wert behandelt wird und daher zu einem Validierungsfehler führt. Dieses Verhalten kann mithilfe der AllowEmptyStrings -Eigenschaft geändert werden:
[Required(AllowEmptyStrings = true)]
[StringLength]
Ermöglicht es Ihnen, mindestens eine maximale Anzahl von Zeichen (der erste, nicht optionale Parameter) für eine Zeichenfolge anzugeben. Außerdem besteht die Möglichkeit, eine minimale Anzahl von Zeichen anzugeben. Hier ist ein Beispiel:
[StringLength(50, MinimumLength = 3)]
In diesem Fall kann der Wert nicht überprüft werden, wenn er weniger als 3 Zeichen oder mehr als 50 Zeichen lang ist.
[Range]
Mit dem Attribut [Range] können Sie einen minimalen und einen maximalen Wert für eine numerische Eigenschaft (int, float, double usw.) angeben. Wenn Sie dieses Attribut verwenden, ist sowohl ein Minimum als auch ein Maximum erforderlich.
[Range(1, 100)]
Jetzt muss Ihr Zahlenwert zwischen 1 und 100 liegen.
[Compare]
Mit dem Attribut [Compare] können Sie einen Vergleich zwischen der betreffenden Eigenschaft und einer anderen Eigenschaft machen, bei dem eine Übereinstimmung erforderlich ist. Ein häufiger Anwendungsfall hierfür könnte darin bestehen, sicherzustellen, dass der Benutzer in den Feldern "Email" und "EmailRepeated" dieselben Werte eingibt:
[Compare("MailAddressRepeated")]
public string MailAddress { get; set; }
public string MailAddressRepeated { get; set; }
Spezifische Typen
Wenn Ihre Zeichenfolge in eine bestimmte Kategorie fällt, z.B.: Als Telefonnummer kann die ASP.NET MVC Ihnen eine sofort einsatzbereite Grundvalidierung zur Verfügung stellen. Hier ist eine Liste der Typen, die Sie angeben können:
- [CreditCard]: Überprüft, ob die Eigenschaft ein Kreditkartenformat hat.
- [EmailAddress]: Überprüft, ob die Eigenschaft ein E-Mail-Format hat.
- [Phone]: Überprüft, ob die Eigenschaft ein Telefonnummernformat hat.
- [Url]: Überprüft, ob die Eigenschaft ein URL-Format hat.
Allen gemeinsam ist, dass sie nur eine sehr grundlegende Validierung bieten. So wird beispielsweise bei der E-Mail-Überprüfung nur sichergestellt, dass der eingegebene Wert einige Merkmale einer E-Mail-Adresse enthält, z.B.: ein @ -Zeichen usw., es ist jedoch weiterhin möglich, etwas einzugeben, das eigentlich in einer Email adresse nicht vorhanden ist. Verwenden Sie für mehr Genauigkeit und/oder Flexibilität das Attribut [RegularExpression] oder implementieren Sie Ihre eigene benutzerdefinierte Logik, wie in einem der nächsten Artikel beschrieben.
[RegularExpression]
Wenn keine der anderen Validierungsarten flexibel genug ist, ist das Attribut [RegularExpression] möglicherweise der letzte Ausweg. Hier können Sie einen regulären Ausdruck angeben, anhand dessen der Wert Ihrer Eigenschaft überprüft wird. Er ist nur gültig, wenn eine Übereinstimmung vorliegt. Reguläre Ausdrücke sind ein viel zu großes Thema, um in diesem Artikel behandelt zu werden. Lassen Sie mich jedoch demonstrieren, wie leistungsfähig sie überhaupt sind. Stellen Sie sich vor, Ihre WebUser-Klasse verfügt über eine MemberId, die in diesem speziellen Format vorliegen muss:
xx-0000-0000
Oder mit anderen Worten: Zwei Buchstaben, ein Bindestrich und dann zwei Gruppen von vier Zahlen mit einem Bindestrich dazwischen, wie zx-1234-5678. Dafür können wir einen regulären Ausdruck erstellen und in unser Attribut [RegularExpression] einfügen:
[RegularExpression("[a-z]{2}-[0-9]{4}-[0-9]{4}")]
public string MemberId { get; set; }
Die Möglichkeiten mit regulären Ausdrücken sind nahezu unbegrenzt, und sie können in vielen anderen Situationen als nur der Validierung verwendet werden. Daher kann es eine gute Investition sein, zu lernen, wie man sie verwendet! Hier ein paar Links, wenn Sie mit dem Erlernen von regulären Ausdrücken beginnen möchten: Regex Tutorial & Spickzettel / Regex Interactive Tutorial .
Zusammenfassung
Mit einer Vielzahl von Validierungsmöglichkeiten, die bereits in das ASP.NET MVC-Framework integriert sind, können Sie die meisten Ihrer Eigenschaften problemlos validieren lassen, indem Sie ihnen ein einfaches Attribut hinzufügen. Wenn Sie mehr Flexibilität benötigen, können Sie immer das Attribut [RegularExpression] oder eine benutzerdefinierte Implementierung der Validierungslogik verwenden, wie in einem der nächsten Artikel erläutert.