如何在ASP.MVC中指定多行编辑器的列和行?
在ASP.MVC 3中,如何为多行EditorFor
(textarea)指定行和列? 我正在使用[UIHint("MultilineText")]
,但找不到任何有关如何为文本区域添加属性的文档。
所需的HTML:
<textarea cols="40" rows="10"></textarea>
我的MVC 3模型的相关部分:
[UIHint("MultilineText")] public string Description { get; set; }
我的Razor cshtml的相关部分:
<div class="editor-field"> @Html.EditorFor(model => model.Description) </div>
我在查看来源:
<div class="editor-field"> <textarea class="text-box multi-line" id="Description" name="Description"></textarea> </div>
我如何设置行和列?
使用TextAreaFor
@Html.TextAreaFor(model => model.Description, new { @class = "whatever-class", @cols = 80, @rows = 10 })
或者使用multi-line
类的风格。
你也可以为此编写EditorTemplate 。
在ASP.NET MVC 5中,您可以使用[DataType(DataType.MultilineText)]
属性。 它将呈现一个TextArea标记。
public class MyModel { [DataType(DataType.MultilineText)] public string MyField { get; set; } }
然后在视图中,如果你需要指定行,你可以这样做:
@Html.EditorFor(model => model.MyField, new { htmlAttributes = new { rows = 10 } })
或者只是用正确的重载使用TextAreaFor:
@Html.TextAreaFor(model => model.MyField, 10, 20, null)
一个选项似乎是使用CSS来设置textarea的样式
.multi-line { height:5em; width:5em; }
在SO或这个 上看到这个条目 。
Amurra接受的答案似乎意味着这个类是在使用EditorFor时自动添加的,但是您必须validation这一点。
编辑:确认,它确实。 所以是的,如果你想使用EditorFor,使用这个CSS样式就可以做你正在寻找的东西。
<textarea class="text-box multi-line" id="StoreSearchCriteria_Location" name="StoreSearchCriteria.Location">
这一个也可以使用较less的努力,我相信(但我在MVC 5)
@Html.Description(model => model.Story, 20, 50, new { })
在MVC 5
@Html.EditorFor(x => x.Address, new {htmlAttributes = new {@class = "form-control", @placeholder = "Complete Address", @cols = 10, @rows = 10 } })
- 检查ViewBag是否有一个属性,有条件地注入JavaScript
- 使用Razor View Engine从ASP.NET MVC 3的局部视图中将内容注入特定的部分
- 剃刀语法 – foreach循环
- ASP.NET视图中的区域?
- 我如何在一个区域使用一个普通的_ViewStart?
- 尝试“System.Web.Mvc.PreApplicationStartCode.Start()”到关键方法“System.Web.WebPages.Razor.PreApplicationStartCode.Start()”失败
- ASP.NET MVC 3(Razor)Ajax.ActionLink – 我做错了什么?
- 从其他控制器呈现部分视图
- 不显眼的validation不适用于dynamic添加的局部视图