22

Utilizzo le annotazioni di dati per la convalida del modello in MVC4 e sto utilizzando attualmente StringLengthAttribute tuttavia NON desidero specificare un valore massimo (attualmente impostato su 50) ma Vogliamo specificare un valore minimo valore della lunghezza della stringa.DataAnnotations StringLength Attributo MVC - senza valore massimo

C'è un modo per specificare solo una lunghezza minima? Forse un altro attributo che posso usare?

mio codice attuale è:

[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; } 

Ogni aiuto è molto apprezzato.

risposta

34

C'è un modo per specificare solo una lunghezza minima? Forse un altro attributo che posso usare?

Utilizzando l'annotazione dati standard, No. È necessario specificare il MaximumLength. Solo gli altri parametri sono opzionali.

In tal caso, io consiglierei qualcosa di simile:

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

È possibile anche utilizzare un Regex (espressione regolare) attribuire come questo:

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

Maggiori informazioni su questo qui: Password Strength Validation with Regular Expressions

+0

Grazie Leniel. Ho fatto ricorso a una regex per regolare la lunghezza della stringa come suggerito. – davey1990

1

Hai pensato di rimuovere le annotazioni di dati e aggiungere un attributo Html all'elemento Html.TextBoxFor nel tuo Vie w?

dovrebbe essere simile:

@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 essendo la lunghezza minima che si sceglie.

Mi piace aggiungere attributi HTML alla mia visualizzazione poiché posso vedere rapidamente l'impatto che ha. senza fare confusione con il tuo database e non richiede di eseguire migrazioni e aggiornamento del database se si utilizzano le migrazioni (primo approccio al codice).

Ricorda che quando si modifica EditorFor in TextBoxFor si perderà lo stile, ma dovrebbe essere una soluzione facile, anche in questo caso è sufficiente aggiungere gli stili alla vista o aggiungere uno stile al file CSS.

Spero che questo aiuti :)

Problemi correlati