我有一个asp.net mvc视图,允许用户在textarea中输入一些描述。
我面临两个问题。
当我展开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>
<% } %>
答案 0 :(得分:22)
使用Razor时使用以下代码
@Html.TextAreaFor(model => model.Comments, 10, 40, null);
答案 1 :(得分:20)
使用ASP.NET MVC的TextArea
帮助程序渲染Html
并使其可调整大小是两个不同的问题。使用Html
帮助程序时,您可以将类添加到textarea
,如
<%:Html.TextAreaFor(x => x.SomeProperty, new { @class = "resizer" }) %>
然后你可以用jQuery挂钩这个类,使它在网页上呈现时可以调整大小。有关使textarea
可调整大小的信息,请参阅Implementing a resizable textarea?。
答案 2 :(得分:0)
更好的是,如果你想自动计算textarea中的行数,你可以使用这个
@Html.TextAreaFor(m => m.Comments, Model.Comments.Count + 1, 40, null)