2011-05-05 20 views
12

Tengo una vista asp.net mvc que permite al usuario introducir alguna descripción en un área de texto.Html.TextAreaFor en asp.net mvc

Hay dos problemas que estoy enfrentando.

O bien, cuando amplío el área de texto, se está expandiendo sin mover otros elementos html o no puedo crear un cuadro de texto multilínea Html.TextBoxFor(). ¿Alguien puede sugerir una solución a esto? Si usa Textarea, ¿cómo hacer que se expanda (crezca en tamaño) para que no se superponga con otros elementos o cómo usar Html.TextBoxFor() para líneas múltiples?

Así es como mi código es el

<% using (Html.BeginForm()) 
     { %> 
    <%: Html.ValidationSummary(true)%> 

    <fieldset> 

     <div class="editor-label1"> 
      <%: Html.LabelFor(Model => Model.PackageID)%> 
     </div> 
     <div class ="editor-field1"> 
      <%: Html.HiddenFor(Model => Model.PackageID)%> 
       <%: Html.DisplayFor(Model => Model.PackageID)%> 
      <%: Html.ValidationMessageFor(Model => Model.PackageID)%> 
     </div> 

     <div class="editor-label1"> 
      <%: Html.LabelFor(Model => Model.PackageName)%> 
     </div> 
     <div class ="editor-field1"> 
      <%: Html.TextBoxFor(Model => Model.PackageName)%> 
      <%: Html.ValidationMessageFor(Model => Model.PackageName)%> 
     </div> 

     <div class="editor-label1"> 
      <%: Html.LabelFor(Model => Model.PackageDesc)%> 
     </div> 
     <div class ="editor-field1" style= "padding-bottom: 50px; margin-bottom: 150px"> 
      <%: Html.TextBoxFor(Model => Model.PackageDesc, new { TextMode = TextBoxMode.MultiLine, cols = "55", rows = "10" })%> 

      <%: Html.ValidationMessageFor(Model => Model.PackageDesc)%> 
     </div> 

     <div class="editor-label1"> 
      <%: Html.LabelFor(Model => Model.PackageTitle)%> 
     </div> 
     <div class ="editor-field1"> 
      <%: Html.TextBoxFor(Model => Model.PackageTitle)%> 
      <%: Html.ValidationMessageFor(Model => Model.PackageTitle)%> 
     </div> 
     <div class ="editor-label"> 
      <%: Html.Label("Project ID") %> 
     </div> 
     <div class="editor-field"> 
      <%:Html.DropDownList("ProjectID", (IEnumerable<SelectListItem>)ViewData["projects"])%> 
     </div> 
     <div> 
       <input type="submit" value="Save Edit" /> 
     </div> 
    </fieldset> 
    <% } %> 

Respuesta

17

representación TextAreaHtml usando el ayudante de ASP.NET MVC y lo que es de tamaño variable son dos preocupaciones diferentes. Al utilizar Html ayudante puede agregar una clase a textarea como

<%:Html.TextAreaFor(x => x.SomeProperty, new { @class = "resizer" }) %> 

A continuación, puede conectar esta clase con jQuery para que sea de tamaño variable cuando se representa en la página web. Consulte Implementing a resizable textarea? para obtener información sobre cómo hacer que su textarea se pueda cambiar de tamaño.

19

usar el siguiente código al utilizar la maquinilla de afeitar

@Html.TextAreaFor(model => model.Comments, 10, 40, null); 
0

Aún mejor, si desea calcular el número de auto-de las filas en el área de texto se puede utilizar esta

@Html.TextAreaFor(m => m.Comments, Model.Comments.Count + 1, 40, null)