2011-05-05 58 views
12

我有一個asp.net mvc視圖,允許用戶在textarea中輸入一些描述。Html.TextAreaFor在asp.net mvc

我面臨兩個問題。

當我展開textarea時,它正在展開而不移動其他html元素,或者我無法創建Html.TextBoxFor()多行文本框。任何人都可以提出解決方案嗎?如果使用Textarea如何使其展開(增大尺寸),以便它不與其他元素重疊或如何將Html.TextBoxFor()用於多行?

這是我的代碼看起來像

<% 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> 
    <% } %> 

回答

17

使用ASP.NET MVC的Html幫手渲染TextArea並使其可調整大小的是兩個不同的擔憂。當使用Html助手,你可以添加一個類textarea

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

然後你可以連接這個類與jQuery,使其可調整大小的,當它在網頁上呈現。有關如何使textarea可調整大小的信息,請參閱Implementing a resizable textarea?

19

使用剃鬚刀使用時

下面的代碼
@Html.TextAreaFor(model => model.Comments, 10, 40, null); 
0

更妙的是,如果你想在textarea的行的自動計算數量,你可以使用這個

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