StringLength/Minlength Validierung nicht verhindern, dass Benutzer von der Buchung der form, für die kein Wert
Ich habe die folgende Eigenschaft auf meinem ViewModel
[StringLength(20, MinimumLength = 1, ErrorMessageResourceName = "Error_StringLength", ErrorMessageResourceType = typeof(Global))]
public string LeagueName { get; set; }
Wenn der string endet als, die größer als 20 Zeichen, die die überprüfung ausgelöst wird, und nicht zulassen, dass den Benutzer zum senden des Formulars. Jedoch, wenn das Feld leer ist, was bedeutet, dass die LeagueName Eigenschaft hat eine Länge von weniger als 1 wird es ermöglichen, dass der Nutzer das Formular.
Ich weiß, das ist leicht gelöst, indem mit dem Required-Attribut, aber warum ist die Validierung nicht wie erwartet funktioniert in diesem Szenario?
- Es ist by design. Was, wenn Sie wollten ein Feld auf, außer entweder keine Eingabe oder wenn Eingabe dann zwischen 3 und 6 Zeichen?
- Was macht Sie denken, dass dies ist das erwartete Verhalten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es durch design.
Dies ist die Validierungslogik für StringLength:
Wie Sie sehen können, wenn der string null ist
StringLength
true zurück.Weil die
StringLength
Attribut validiert nur die Länge der Zeichenfolge. Es macht nur die überprüfung, ob der string nicht null ist.Hier ist die Validierung der Methode aus
System.ComponentModel.DataAnnotations.dll
:Verwenden neueste version von MVC (5.1 und jquery validate-Pakete) und verwenden
MinLength
- Attribut statt. Sehen details mvc51-release-notes#Unaufdringlich