如何在ASP.MVC中指定多行编辑器的列和行?

时间:2011-06-02 17:24:08

标签: asp.net-mvc razor data-annotations

在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>

我在View Source中获得的内容:

 <div class="editor-field">
     <textarea class="text-box multi-line" id="Description" name="Description"></textarea>
 </div>

如何设置行和列?

7 个答案:

答案 0 :(得分:129)

使用TextAreaFor

@Html.TextAreaFor(model => model.Description, new { @class = "whatever-class", @cols = 80, @rows = 10 })

或使用multi-line类的样式。

你也可以为此写EditorTemplate

答案 1 :(得分:26)

在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)

答案 2 :(得分:8)

我相信这个也可以用更少的努力(但我在MVC 5中)

@Html.Description(model => model.Story, 20, 50, new { })

enter image description here

答案 3 :(得分:5)

一个选项似乎是使用CSS来设置textarea的样式

.multi-line { height:5em; width:5em; }

请参阅this entry on SOthis one.

Amurra接受的答案似乎暗示在使用EditorFor时会自动添加此类,但您必须验证这一点。

编辑:确认,确实如此。所以是的,如果你想使用EditorFor,那么使用这种CSS样式可以满足您的需求。

<textarea class="text-box multi-line" id="StoreSearchCriteria_Location" name="StoreSearchCriteria.Location">

答案 4 :(得分:0)

在mvc 5中

              @Html.EditorFor(x => x.Address, 
              new {htmlAttributes = new {@class = "form-control", 
                   @placeholder = "Complete Address", @cols = 10, @rows = 10 } })

答案 5 :(得分:0)

.net VB 中 - 您可以在剃刀文件中使用以下内容控制列和行:

@Html.EditorFor(Function(model) model.generalNotes, New With {.htmlAttributes = New With {.class = "someClassIfYouWant", .rows = 5,.cols=6}})

答案 6 :(得分:0)

@ Html.TextArea(“ txtNotes”,“”,4,0,新建{@class =“ k-textbox”,样式=“宽度:100%;高度:100%;”})