Ответ 1
Вы можете переопределить шаблон редактора по умолчанию (~/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>
Также вы можете улучшить шаблон редактора, чтобы вам не нужно указывать атрибут @class на каждом вызове EditorFor, например:
@{
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" })
О, и не забывайте, что идентификаторы должны быть уникальными в HTML, поэтому этот id = "dialogText"
, очевидно, будет отличаться для второго текстового поля.