Was ist der Unterschied im Verhalten [MaxLength]
und in den [StringLength]
Attributen?
Soweit ich das beurteilen kann (mit der Ausnahme, dass [MaxLength]
die maximale Länge eines Arrays überprüft werden kann), sind diese identisch und etwas redundant?
asp.net-mvc-3
ef-code-first
entity-framework-4.1
Nick Goloborodko
quelle
quelle
Antworten:
MaxLength wird für das Entity Framework verwendet, um zu entscheiden, wie groß ein Zeichenfolgenwertfeld beim Erstellen der Datenbank sein soll.
Von MSDN:
StringLength ist eine Datenanmerkung , die zur Validierung von Benutzereingaben verwendet wird.
Von MSDN:
quelle
MaxLengthAttribute
, während EF erkenntStringLengthAttribute
[MaxLength]
es dann eine ErrorMessage?Einige schnelle, aber äußerst nützliche Zusatzinformationen, die ich gerade aus einem anderen Beitrag gelernt habe, für die ich jedoch anscheinend keine Dokumentation gefunden habe (wenn jemand einen Link auf MSDN teilen kann, wäre das erstaunlich):
Die diesen Attributen zugeordneten Validierungsnachrichten ersetzen tatsächlich die den Attributen zugeordneten Platzhalter. Beispielsweise:
Gibt Folgendes aus, wenn die Zeichenbeschränkung überschritten wird: "Die Adresse kann maximal 100 Zeichen enthalten."
Die mir bekannten Platzhalter sind:
Vielen Dank an bloudraak für den ersten Hinweis.
quelle
Im Folgenden sind die Ergebnisse aufgeführt, wenn wir sowohl
[MaxLength]
als auch[StringLength]
Attribute verwendenEF code first
. Wenn beide verwendet werden,[MaxLength]
gewinnt das Rennen. Siehe das Testergebnis in derstudentname
Spalte in der folgenden Klassequelle
Alle guten Antworten ... Aus Sicht der Validierung habe ich auch festgestellt, dass MaxLength nur auf der Serverseite validiert wird, während StringLength auch auf der Clientseite validiert wird.
quelle
MaxLengthAttribute bedeutet max. Länge der Array- oder String-Daten zulässig
StringLengthAttribute bedeutet min. und max. Länge der Zeichen, die in einem Datenfeld zulässig sind
Besuchen Sie http://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/
quelle
Ein weiterer Punkt nach unten zu beachten ist , in MaxLength - Attribute Sie nur bieten können max erforderlichen Bereich keine min erforderlichen Bereich. In StringLength können Sie beides angeben .
quelle
Ich habe es gelöst, indem ich in meinem Kontext die folgende Zeile hinzugefügt habe:
Irgendwie hat
[MaxLength]
es bei mir nicht funktioniert.quelle
Wenn Sie das Attribut verwenden, um die maximale Eingabelänge für Text aus einem Formular auf einer Webseite einzuschränken, scheint die StringLength das HTML-Attribut maxlength zu generieren (zumindest in meinem Test mit MVC 5). Die Auswahl hängt dann davon ab, wie Sie den Benutzer darauf hinweisen möchten, dass dies die maximale Textlänge ist. Mit dem Attribut stringlength kann der Benutzer einfach nicht über die zulässige Länge hinaus tippen. Das Attribut maxlength fügt dieses HTML-Attribut nicht hinzu, sondern generiert Datenvalidierungsattribute. Dies bedeutet, dass der Benutzer über die angegebene Länge hinaus tippen kann und dass das Verhindern längerer Eingaben von der Validierung in Javascript abhängt, wenn er zum nächsten Feld wechselt oder auf Senden klickt (oder Wenn Javascript deaktiviert ist, serverseitige Validierung. In diesem Fall kann der Benutzer durch eine Fehlermeldung über die Einschränkung informiert werden.
quelle