2010-03-22 7 views
30

Kann ich MVC 2 DataAnnotations verwenden, um eine Mindestlänge für ein Zeichenfolgenfeld anzugeben?ASP.NET-MVC 2 DataAnnotations StringLength

Hat jemand dies getan oder haben sie benutzerdefinierte Attribute erstellt und wenn ja, haben Sie etwas dagegen, die Quelle zu teilen?

Antwort

73

Wenn Sie asp.net 4.0 verwenden, können Sie das StringLength-Attribut verwenden, um eine Mindestlänge anzugeben.

ZB:

[StringLength(50, MinimumLength=1)] 
public string MyText { get; set; } 
+2

Nein, wir sind nicht 4.0 mit nur noch und die Art und Weise Dinge passieren hier ist es noch nicht für eine lange Zeit sein wird. :) – griegs

+0

FYI .. Wenn Sie "unterschreiben" (dh Sie nicht ein Formularfeld namens "MyText"), wird die StringLength-Validierung für diese Eigenschaft ignoriert. [Hier ist ein Artikel] (http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html) Erklären dieses Szenario mit einem ähnlichen Attribut (RequiredAttribute) . – tbehunin

7

einen regulären Ausdruck Attribut verwenden. Diese werden auch auf der Client-Seite interpretiert.

[RegularExpression(Regexes.MinStringLength)] 
public string MyText { get; set; } 

Dabei ist Regexes.MinStringLength eine statische Klasse für reguläre Ausdrücke. Inline würde wie folgt aussehen:

[RegularExpression(@"^.{5,10}$")] // valid five to ten characters 
public string MyText { get; set; } 
+0

Regexes.MinStringLength scheint zu Hause zu sein, vielleicht könnten Sie ein Beispiel einfügen, das ohne weitere Definitionen funktioniert? Vielleicht [RegularExpression (". {1}")], wobei 1 für die gewünschte Mindestlänge geändert wird. –

+0

Sorry, das sollte lesen [RegularExpression (". {1,}")] - ref http://msdn.microsoft.com/en-us/library/az24scfc.aspx –

+0

Sicher - siehe Update. –