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

Dan*_*sen 67 asp.net-mvc data-annotations razor

在ASP.MVC 3中,如何指定多行EditorFor(textarea)的列和行?我正在使用[UIHint("MultilineText")],但找不到有关如何为文本区域添加属性的任何文档.

期望的HTML:

 <textarea cols="40" rows="10"></textarea>
Run Code Online (Sandbox Code Playgroud)

我的MVC 3模型的相关部分:

[UIHint("MultilineText")]
public string Description { get; set; }
Run Code Online (Sandbox Code Playgroud)

我的Razor cshtml的相关部分:

<div class="editor-field">
    @Html.EditorFor(model => model.Description)
</div>
Run Code Online (Sandbox Code Playgroud)

我在视图中获得的内容:

 <div class="editor-field">
     <textarea class="text-box multi-line" id="Description" name="Description"></textarea>
 </div>
Run Code Online (Sandbox Code Playgroud)

如何设置行和列?

ami*_*t_g 134

使用TextAreaFor

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

或者使用multi-line课堂风格.

您也可以为此编写EditorTemplate.


Jua*_*rto 27

在ASP.NET MVC 5中,您可以使用该[DataType(DataType.MultilineText)]属性.它将呈现TextArea标记.

public class MyModel
{
    [DataType(DataType.MultilineText)]
    public string MyField { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

@Html.EditorFor(model => model.MyField, new { htmlAttributes = new { rows = 10 } })
Run Code Online (Sandbox Code Playgroud)

或者只使用具有正确重载的TextAreaFor:

@Html.TextAreaFor(model => model.MyField, 10, 20, null)
Run Code Online (Sandbox Code Playgroud)

  • 目前它是MVC 5,它的工作原理. (2认同)

Moh*_*ari 8

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

@Html.Description(model => model.Story, 20, 50, new { })
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Khe*_*pri 5

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

.multi-line { height:5em; width:5em; }
Run Code Online (Sandbox Code Playgroud)

请参阅SO此条目中的此条目.

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

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

<textarea class="text-box multi-line" id="StoreSearchCriteria_Location" name="StoreSearchCriteria.Location">
Run Code Online (Sandbox Code Playgroud)