如何在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 } })