2011-02-10 19 views
8

Sé que puede usar el atributo DataType con el Editor para html helper para especificar que una propiedad particular de una entidad modelo debe mostrarse como una línea múltiple campo de entrada.Uso de Html.EditorPara generar un área de texto con un número específico de filas y columnas

¿Qué sucede si quiero especificar el número de filas y columnas que debe tener el área de texto?

En el modelo:

[DataType(DataType.MultilineText)] 
public string HTMLText { get; set; } 

En la vista:

@Html.EditorFor(x => x.HTMLText) 

resultado deseado:

<textarea id="HTMLText" rows="10" cols="40">value</textarea> 

¿Hay una manera de generar este tipo de código sin utilizar el @ Html.Textarea() ayuda?

Respuesta

8

No estoy seguro de cómo configurar las filas y columnas, pero puede modificar el CSS de esas áreas de texto utilizando la clase .multi-line. Esta clase se agrega al área de texto cuando se utiliza EditorFor para que pueda especificar el ancho y el alto en esa clase para obtener las dimensiones deseadas.

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

Usando esta técnica que significaría que voy a tener que especificar la clase en la vista. Estaba buscando una manera de controlar esto directamente desde el modelo. – Jason

+0

@Jason: solo debería especificarlo en la vista si realizó CSS ​​de nivel de página. Si lo arroja en una hoja de estilo externa, entonces no estará en la vista. Sé que no responde totalmente a su pregunta, pero solo le hace saber que es una opción. – amurra

+0

@Lmrini Frozen 's awnser es el mejor enfoque, en lugar de agregar una clase CSS, puede usar una afeitadora para generar los atributos deseados. – Bjego

0

Parece que esto ya no es necesario hacer la MVC 5 cuando se tiene @ Html.EditorFor con DataType.MultilineText campo.

1

puede especificar el tamaño de los atributos y carbón equivalente de fila y columna de la maquinilla de afeitar/C# es decir:

@Html.TextAreaFor(model => model.Longtext, new { htmlAttributes = new { @class = "ctrl-col2 ctrl-col1", @row = "4", @col = "30" } }) 
+0

¡Esta es la respuesta correcta! – Bjego

Cuestiones relacionadas