22

Estoy usando anotaciones de datos para la validación de modelos en MVC4 y actualmente estoy usando StringLengthAttribute, pero NO deseo especificar un valor máximo (actualmente establecido en 50) pero NO deseo especificar un mínimo valor de longitud de cadenaAnotaciones de datos StringLength Atributo MVC - sin valor máximo

¿Hay alguna manera de especificar solo una longitud mínima? Quizás otro atributo que pueda usar?

Mi código actual es:

[Required] 
    [DataType(DataType.Password)] 
    [Display(Name = "Confirm New Password")] 
    [StringLength(50, MinimumLength = 7)] 
    [CompareAttribute("NewPassword", ErrorMessage = "The New Password and Confirm New Password fields did not match.")] 
    public string ConfirmNewPassword { get; set; } 

Cualquier ayuda es muy apreciada.

Respuesta

34

¿Hay alguna manera de especificar solo una longitud mínima? Tal vez otro atributo que puedo usar?

Usando la anotación de datos estándar, No. Debe especificar MaximumLength. Solo los otros parámetros son opcionales.

En tal caso, se lo recomiendo algo como esto:

[StringLength(int.MaxValue, MinimumLength = 7)] 

También puede utilizar una expresión regular (expresión regular) atribuir como éste:

[RegularExpression(@"^(?:.*[a-z]){7,}$", ErrorMessage = "String length must be greater than or equal 7 characters.")] 

Más información sobre este aquí: Password Strength Validation with Regular Expressions

+0

Gracias Leniel. He recurrido al uso de una expresión regular para regular la longitud de la cadena como sugirió. – davey1990

1

¿Ha pensado eliminar las anotaciones de datos y agregar un atributo Html al elemento Html.TextBoxFor en su Vie w?

debería ser algo como:

@Html.TextBoxFor(model => model.Full_Name, new { htmlAttributes = new { @class = "form-control", @minlength = "10" } }) 

o

@Html.TextBoxFor(model => model.Full_Name, new { @class = "form-control", @minlength = "10" } }) 

10 siendo la longitud mínima que elija.

Me gusta agregar atributos html a mi vista, ya que puedo ver rápidamente el impacto que tiene. sin jugar con su base de datos y no requiere que ejecute migraciones y actualización de la base de datos si usa migraciones (primer acercamiento del código).

solo recuerde que cuando cambie el Editor por TextBoxPara perderá su estilo, pero debería ser una solución fácil, nuevamente puede agregar los estilos a su vista o agregar estilo a su archivo CSS.

Espero que esto ayude :)

Cuestiones relacionadas