2012-05-28 7 views
10

esto puede ser un poco general, pero quiero limitar el número de caracteres en el campo del editor.mvc3 maxLength entrada

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

Esto no parece funcionar.

Respuesta

21

pruebe a cambiar a

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

EditorFor utiliza las plantillas, que se puede anular a sí mismo. No creo que tengan en cuenta los atributos que pasas así. El TextBoxFox <> lo genera en código y debería funcionar bien.

+0

Y qué pasa si tenemos que combinar. Debo usar el editor para las filigranas, y todavía necesito maxlength. aquí está mi código de editor '@ Html.TextBox (" ", ViewData.TemplateInfo.FormattedModelValue, new {placeholder = ViewData.ModelMetadata.Watermark})' ¿cómo puedo obtener "max" de los metadatos? –

+0

Tiene que escribir su propio proveedor de metadatos (posiblemente) y un asistente personalizado que agregue a HtmlOptions antes de procesarlo (básicamente, un envoltorio simple). –

3

En MVC3, esto es mejor:

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

Especifica la longitud mínima y máxima de los caracteres que se permiten en un campo de datos. como en este https://stackoverflow.com/a/6802739/2127493

+0

Eso no funcionó para mí, ni 'MaxLength' ni' StringLength' agregaron el atributo 'maxlength', en cambio solo obtuve' data-val-length-max' y 'data-val-maxlength-max'. – MushyPeas

5

Pude hacerlo funcionar en IE11 usando el Editor Para y usando múltiples atributos.

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

No funciona con MVC5 Razor. – iberodev

+1

Upvoting porque esto funcionó para mí: '@ Html.EditorFor (model => model.CourseNumber, new {htmlAttributes = new {maxlength = 10}})' – Reyhn

Cuestiones relacionadas