2010-03-22 12 views
30

Puis-je utiliser MVC 2 DataAnnotations pour spécifier une longueur minimale pour un champ de chaîne?ASP.NET-MVC 2 DataAnnotations StringLength

Est-ce que quelqu'un a fait cela ou a-t-il créé des attributs personnalisés et si oui, est-ce que cela vous dérange de partager la source?

Répondre

73

Si vous utilisez asp.net 4.0, vous pouvez utiliser l'attribut StringLength pour spécifier une longueur minimale.

Par exemple:

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

Non, nous n'utilisons pas 4.0 pour le moment et la façon dont les choses se passent ici ne le sera pas pour longtemps. :) – griegs

+0

FYI .. Si vous "sous-publier" (ce qui signifie que vous ne publiez pas un champ de formulaire appelé "MyText"), la validation StringLength sur cette propriété sera ignorée. [Voici un article] (http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html) expliquant ce scénario en utilisant un attribut similaire (RequiredAttribute) . – tbehunin

7

Utilisez un attribut d'expression régulière. Ils sont également interprétés du côté client.

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

Regexes.MinStringLength est une classe d'expression régulière statique. Inline ressemblerait à ceci:

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

Regexes.MinStringLength semble avoir grandi, peut-être que vous pourriez mettre dans un exemple qui fonctionne sans avoir besoin d'autres définitions? Peut-être que [RegularExpression (". {1}")], en changeant 1 pour la longueur minimale que vous voulez. –

+0

Désolé, cela devrait lire [RegularExpression (". {1,}")] - ref http://msdn.microsoft.com/fr-fr/library/az24scfc.aspx –

+0

Bien sûr - voir mise à jour. –