2012-05-28 4 views
10

questo può essere un tipo di generale ma voglio limitare il numero di caratteri in ingresso in un campo editor per.mvc3 maxLength input

@html.EditorFor(m=>m.id,new {@maxlength="10"}) 

Questo non sembra funzionare.

risposta

21

provare a cambiare a

@Html.TextBoxFor(m=> m.id, new { maxlength="10" }); 

EditorFor utilizza i modelli, che è possibile eseguire l'override da soli. Non penso che tengano conto degli attributi in cui passi in questo modo. TextBoxFox < lo genera in codice e dovrebbe funzionare correttamente.

+0

E se è necessario combinare. Devo usare l'editor per watermark e ho ancora bisogno di maxlength. ecco il mio codice editor '@ Html.TextBox (" ", ViewData.TemplateInfo.FormattedModelValue, new {placeholder = ViewData.ModelMetadata.Watermark})' come posso ottenere "max" dai metadati? –

+0

Devi scrivere il tuo provider di metadati (possibilmente) e un helper personalizzato che aggiunge a HtmlOptions prima del rendering (fondamentalmente un semplice wrapper). –

3

In MVC3, questo è meglio:

[StringLength(10, ErrorMessage = "Name cannot be longer than 10 characters.")] 
public string Name { get; set; } 

Specifica la lunghezza minima e massima di carattere consentito in un campo dati. come in questo https://stackoverflow.com/a/6802739/2127493

+0

Questo non ha funzionato per me, né 'MaxLength' né' StringLength' hanno aggiunto l'attributo 'maxlength', invece ho solo' data-val-length-max' e 'data-val-maxlength-max'. – MushyPeas

5

Sono riuscito a farlo funzionare in IE11 utilizzando EditorFor e utilizzando più attributi.

@Html.EditorFor(model => model.CourseNumber, new { htmlAttributes = new { @style = "width:100px", @maxlength="10" } }) 
+0

Non funziona con Razor MVC5. – iberodev

+1

Fare l'upvoting perché questo ha funzionato per me: '@ Html.EditorFor (model => model.CourseNumber, new {htmlAttributes = new {maxlength = 10}})' – Reyhn