2011-06-02 22 views
55

En ASP.MVC 3, ¿cómo especifico las columnas y filas para una línea múltiple EditorFor (textarea)? Estoy usando [UIHint("MultilineText")], pero no puedo encontrar ninguna documentación sobre cómo agregar atributos para el área de texto.¿Cómo especifico las columnas y filas de un editor de líneas múltiples en ASP.MVC?

HTML deseado:

<textarea cols="40" rows="10"></textarea> 

parte pertinente de mi MVC 3 Modelo:

[UIHint("MultilineText")] 
public string Description { get; set; } 

parte pertinente de mi cshtml Razor:

<div class="editor-field"> 
    @Html.EditorFor(model => model.Description) 
</div> 

lo que estoy haciendo en la vista Fuente:

<div class="editor-field"> 
    <textarea class="text-box multi-line" id="Description" name="Description"></textarea> 
</div> 

¿Cómo configuro filas y columnas?

Respuesta

107

@Html.TextAreaFor(model => model.Description, new { @class = "whatever-class", @cols = 80, @rows = 10 }) 

o el uso de estilo Uso TextAreaFor para multi-line clase.

También puede escribir EditorTemplate para esto.

+0

¡Por supuesto! Supongo que estaba pensando demasiado en el problema. –

5

Una opción parece estar usando CSS para estilizar el área de texto

.multi-line { height:5em; width:5em; } 

Ver this entry on SO o this one.

respuesta aceptada de Amurra parece implicar esta clase se añade automáticamente cuando se utiliza EditorFor pero se tendría que verificar esto

EDITAR: Confirmado, lo hace. Entonces, sí, si quieres usar EditorFor, usar este estilo CSS hace lo que estás buscando.

<textarea class="text-box multi-line" id="StoreSearchCriteria_Location" name="StoreSearchCriteria.Location"> 
+0

gracias por responder a la pregunta de su creador original. Cuando se utiliza un marco que crea campos de entrada usando 'EditorFor', por ejemplo _Telerik ASP.NET MVC_, sustituyendo 'TextAreaFor' no es una opción. Gracias por esto. – Suncat2000

24

En ASP.NET MVC 5 puede usar el atributo [DataType(DataType.MultilineText)]. Retraerá una etiqueta TextArea.

public class MyModel 
{ 
    [DataType(DataType.MultilineText)] 
    public string MyField { get; set; } 
} 

Luego, en la vista si es necesario especificar las filas que puede hacerlo de esta manera:

@Html.EditorFor(model => model.MyField, new { htmlAttributes = new { rows = 10 } }) 

O simplemente utilizar el TextAreaFor a la sobrecarga derecha:

@Html.TextAreaFor(model => model.MyField, 10, 20, null) 
+0

Es bueno saber que hicieron ese cambio. :-) –

+2

Actualmente es MVC 5, y funciona. – GSerg

+0

El atributo 'DataType.MultilineText' también funciona en MVC 4 ... – NightElfik

6

Este uno también se puede utilizar con menos esfuerzo, creo (pero estoy en MVC 5)

@Html.Description(model => model.Story, 20, 50, new { }) 

enter image description here

0

en mvc 5

   @Html.EditorFor(x => x.Address, 
       new {htmlAttributes = new {@class = "form-control", 
        @placeholder = "Complete Address", @cols = 10, @rows = 10 } }) 
Cuestiones relacionadas