2010-08-12 18 views
7

¿Cómo se establece el MaxLength y el tamaño de un cuadro de texto en MVC 2? Se han hecho un par de preguntas sobre esto en SO. Como recién llegado a MVC, estoy descubriendo que ninguna de las soluciones parece funcionar, posiblemente porque no lo estoy haciendo bien.MVC 2 Editor para MaxLength y tamaño

En cualquier caso, me pregunto si hay mejores soluciones, ya que parece que las preguntas anteriores se hacen en un momento en que MVC 2 estaba en beta.

Respuesta

9

Es fácil, sólo para tener htmlAtttributes adicionales

<%= Html.TextBoxFor(model => model.Member, new { maxlength = "20", width = "15" }) %> 
<%= Html.TextBoxFor(model => model.Member, new { maxlength = "20", style = "width:200px;" }) %> 
+0

¡Increíble! Realmente lo arreglaron después de la versión Beta. Aun así, descubrí que solo la segunda línea funcionaba en su solución. Además, la solución solo funciona para TextBoxFor y no para EditorFor, aunque por ahora estoy de acuerdo con eso. – arame3333

+0

Puede pasar todos los atributos html, pero recuerde que tienen que ser válidos para un elemento html específico generado por html helper, en este caso es una entrada. –

+7

El encabezado del asunto dice EditorFor - la respuesta dice TextBoxFor. FYI - HtmlAttributes extra no funciona con EditorFor a menos que usted decore la propiedad usando System.ComponentModel.DataAnnotations "[StringLength (5, ErrorMessage =" Debe tener 5 caracteres o menos ")]", de lo contrario debe cambiar a TextBoxFor y ENTONCES puede usar los HtmlAttributes adicionales mencionados en la respuesta. –

0

Los trabajos solución anterior, pero si tiene varias instancias de ese campo, sería más fácil de configurar en el modelo o la vista del modelo. Tenga cuidado al modificar el modelo real porque pueden ser volátiles al actualizar.

Ejemplo: En el modelo de modelo o vista.

[DisplayName("Notes")] 
[MaxLength(500, ErrorMessage="Maximum length of notes field is 500 characters...")] 
[DataType(DataType.MultilineText)] 
public string Notes { get; set; } 

Para que valide en el envío, necesitará lo siguiente en su web.config.

<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

Asegúrese de que hace referencia a los archivos JS validación en algún lugar, preferiblemente en Común/_Layout o en la propia página ...

<script src="~/Scripts/jquery.validate.min.js"></script> 
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> 

Por último, asegúrese de que incluye el mensaje de validación en el cshtml.

@Html.EditorFor(model => model.Notes, new { htmlAttributes = new { @class = "form-control", rows = "5", @placeholder = "Notes", title = "Enter any notes..." } }) 
@Html.ValidationMessageFor(model => model.Notes, "", new { @class = "text-danger" }) 

genere la solución y prueba. Espero que esto ayude a cualquier otra persona a buscar una solución.

Cuestiones relacionadas