如何在 ASP.MVC 中指定多行 Editor-For 的列和行?

在 ASP.MVC3中,如何为多行 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>

如何设置行和列?

111847 次浏览

一个选项似乎是使用 CSS 来设计文本区域的样式

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

参见 关于 SO 的这一条目这个。

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

编辑: 确认,是的。所以,是的,如果你想使用 EditorFor,使用这个 CSS 样式可以达到你想要的效果。

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

使用 TextArea

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

或使用风格的 multi-line类。

您也可以为此编写 编辑模板

在 ASP.NET MVC 5中,你可以使用 [DataType(DataType.MultilineText)]属性,它会呈现一个 文本区标签。

public class MyModel
{
[DataType(DataType.MultilineText)]
public string MyField { get; set; }
}

然后在视图中,如果需要指定行,可以这样做:

@Html.EditorFor(model => model.MyField, new { htmlAttributes = new { rows = 10 } })

或者直接使用 TextArea For:

@Html.TextAreaFor(model => model.MyField, 10, 20, null)

这一个也可以用较少的努力,我相信(但我在 MVC 5)

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

enter image description here

在 MVC5

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

. net VB中,你可以通过下面的剃须刀文件来控制行和列:

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

@ Html. TextArea (“ txtNotes”,“”,4,0,new {@class = “ k-textbox”,style = “ width: 100% ; height: 100% ;”})