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)
@Html.Description(model => model.Story, 20, 50, new { })
Run Code Online (Sandbox Code Playgroud)
一个选项似乎是使用CSS来设置textarea的样式
.multi-line { height:5em; width:5em; }
Run Code Online (Sandbox Code Playgroud)
Amurra接受的答案似乎暗示在使用EditorFor时会自动添加此类,但您必须验证这一点.
编辑:确认,确实如此.所以是的,如果你想使用EditorFor,那么使用这种CSS样式可以满足您的需求.
<textarea class="text-box multi-line" id="StoreSearchCriteria_Location" name="StoreSearchCriteria.Location">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94143 次 |
| 最近记录: |