c# - net - crear cuadro de texto multilínea utilizando la función Html.Helper
mvc c# (6)
Estoy intentando crear un cuadro de texto multilínea utilizando ASP.NET MVC con el siguiente código.
<%= Html.TextBox("Body", null, new { TextBoxMode = "MultiLine", Columns = "55px", Rows = "10px" })%>
Simplemente aparece un cuadro de texto de tamaño fijo de una sola línea.
por otra parte
<asp:TextBox runat="server" ID="Body" TextMode="MultiLine" Columns="55" Rows="10"></asp:TextBox>
representa la vista correcta, pero en el método de publicación del controlador con la forma nombrada formCollection
form["Body"];
devuelve un valor nulo.
Creo que el Html.EditorFor es lo que estás buscando. Eso es solo para MVC2 y para arriba. ¿Eso ayuda?
Si usa DataAnnotations y decora su propiedad con el atributo [DataType(DataType.MultilineText)]
, MVC debe andamiar el html requerido para usted.
En la capa de Entidad:
[MaxLength(500)]
public string Body { get; set; }
Y a la vista:
@Html.TextAreaFor(model => model.Body, new { rows = 10, cols = 50 })
Esto permite líneas múltiples, establecer ancho y altura personalizados y establecer el marcador de posición. Para la validación utilizada StringLength o RegularExpression en Model.cs
Sintaxis de Razor View
@Html.TextAreaFor(model => model.property, new { style = "width: 420px; height: 100px;", placeholder = "Placeholder here.." })
MVC4 debes usar:
@Html.TextAreaFor(x => x.Body, 10, 15, null)
Solución de VB.net:
@ Html.TextAreaFor (Function (Model) Model.Body, 3, 55, Nothing)
Un cuadro de texto multilínea en html es <textarea>
:
<%= Html.TextArea("Body", null, new { cols = "55", rows = "10" }) %>
o:
<%= Html.TextArea("Body", null, 10, 55, null) %>
o mejor:
<%= Html.TextAreaFor(x => x.Body, 10, 55, null) %>
Y otra posibilidad más es decorar su propiedad de modelo de vista con el atributo [DataType]
:
[DataType(DataType.MultilineText)]
public string Body { get; set; }
y en su opinión:
<%= Html.EditorFor(x => x.Body) %>
y establece el ancho y alto a través de CSS.