您可以覆盖默认编辑器模板( ~/Views/Shared/EditorTemplates/MultilineText.cshtml
):
@Html.TextArea(
"",
ViewData.TemplateInfo.FormattedModelValue.ToString(),
ViewData
)
然后假设您已经定义了一个视图模型:
public class MyViewModel
{
[DataType(DataType.MultilineText)]
public string Text { get; set; }
}
在主视图中,您可以这样做:
@model MyViewModel
@Html.EditorFor(x => x.Text, new { cols = "100", rows = "15", id = "dialogText", @class = "full-width" })
@Html.EditorFor(x => x.Text, new { cols = "100", rows = "10", id = "dialogText", @class = "full-width" })
这将呈现预期的输出:
<textarea class="full-width" cols="100" id="dialogText" name="Text" rows="15">
hello world
</textarea>
<textarea class="full-width" cols="100" id="dialogText" name="Text" rows="10">
hello world
</textarea>
您还可以增强编辑器模板,这样您就不需要在每个 EditorFor 调用中指定 @class 属性,如下所示:
@{
var htmlAttributes = ViewData;
htmlAttributes["class"] = "full-width";
}
@Html.TextArea(
"",
ViewData.TemplateInfo.FormattedModelValue.ToString(),
htmlAttributes
)
现在你可以:
@model MyViewModel
@Html.EditorFor(x => x.Text, new { cols = "100", rows = "15", id = "dialogText" })
@Html.EditorFor(x => x.Text, new { cols = "100", rows = "10", id = "dialogText" })
哦,别忘了 id 在 HTML 中必须是唯一的,所以这id = "dialogText"
对于第二个 textarea 显然应该是不同的。