2010-03-22 23 views
30

¿Puedo utilizar las anotaciones de datos de MVC 2 para especificar una longitud mínima para un campo de cadena?ASP.NET-MVC 2 Anotaciones de datos StringLength

¿Alguien ha hecho esto o han creado atributos personalizados? Si es así, ¿te importa compartir la fuente?

Respuesta

73

Si está utilizando asp.net 4.0, puede usar el atributo StringLength para especificar una longitud mínima.

Ej:

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

No, no estamos usando 4.0 por el momento y la forma en que las cosas suceden aquí no será por un largo tiempo todavía. :) – griegs

+0

FYI .. Si "sube la publicación" (lo que significa que no publica un campo de formulario llamado "MyText"), se ignorará la validación de StringLength en esa propiedad. [Aquí hay un artículo] (http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html) que explica este escenario utilizando un atributo similar (RequiredAttribute) . – tbehunin

7

Utilice un atributo de expresión regular. Estos también se interpretan en el lado del cliente.

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

Donde Regexes.MinStringLength es una clase de expresión regular estática. En línea se vería así:

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

Regexes.MinStringLength parece ser de cosecha propia, ¿quizás podría poner un ejemplo que funcione sin necesidad de otras definiciones? Tal vez [RegularExpression (". {1}")], cambiando 1 para la longitud mínima que desee. –

+0

Lo sentimos, debería leer [RegularExpression (". {1,}")] - ref http://msdn.microsoft.com/en-us/library/az24scfc.aspx –

+0

Seguro - ver la actualización. –

Cuestiones relacionadas