2012-06-29 28 views
7

sto usando il motore di Razor MVC3 di generare viste e hanno la seguente riga di codice generare una casella di testoLimitare la lunghezza di caratteri in una casella di testo durante l'utilizzo del rasoio Html.EditFor

@Html.EditorFor(model => model.AddressLine1) 

Nel modello in questione I' m utilizzando un attributo di dati di annotazione per limitare il numero di caratteri accettabili per 55:

[StringLength(55)] 
public string AddressLine1 { get; set; } 

Tuttavia, questo consente all'utente di digitare un indirizzo più solo per essere poi ha detto tramite un messaggio di convalida quando provano e inviare il modulo . Come posso limitare la casella di testo a 55 caratteri in modo che l'utente non sia in grado di digitare più di quello in?

Se stessi generando la casella di testo, userei l'attributo maxlength per un tipo di input, ma non sono sicuro di come ottenere gli stessi risultati utilizzando il metodo Html.EditFor.

risposta

8
@Html.TextBoxFor(model => model.AddressLine1, new {maxlength = 55}) 

maxlength
Se il valore dell'attributo type è un testo, e-mail, la ricerca, la password, tel, o un URL, questo attributo specifica il numero massimo di caratteri (in punti codice Unicode) che l'utente può inserire; per altri tipi di controllo, viene ignorato.

È inoltre possibile utilizzare jQuery senza cambiare il DOM:

$('#AddressLine1').keypress(function(){ 
    return this.value.length < 55 
}) 
+2

funziona perfettamente in HTML4. Sono solo nuove restrizioni in HTMl5, penso. –

+0

@ RaphaëlAlthaus. Hai ragione, ho provato in IE8, ed è supportato. Ho modificato – gdoron

Problemi correlati