Ответ 1
Использовать TextAreaFor
@Html.TextAreaFor(model => model.Description, new { @class = "whatever-class", @cols = 80, @rows = 10 })
или используйте стиль для класса multi-line
.
Вы также можете написать EditorTemplate для этого.
В ASP.MVC 3 как указать столбцы и строки для многострочного 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>
Что я получаю в View Source:
<div class="editor-field">
<textarea class="text-box multi-line" id="Description" name="Description"></textarea>
</div>
Как установить строки и столбцы?
Использовать TextAreaFor
@Html.TextAreaFor(model => model.Description, new { @class = "whatever-class", @cols = 80, @rows = 10 })
или используйте стиль для класса multi-line
.
Вы также можете написать EditorTemplate для этого.
В ASP.NET MVC 5 вы можете использовать атрибут [DataType(DataType.MultilineText)]
. Он будет отображать тег TextArea.
public class MyModel
{
[DataType(DataType.MultilineText)]
public string MyField { get; set; }
}
Затем в представлении, если вам нужно указать строки, вы можете сделать это следующим образом:
@Html.EditorFor(model => model.MyField, new { htmlAttributes = new { rows = 10 } })
Или просто используйте TextAreaFor с правильной перегрузкой:
@Html.TextAreaFor(model => model.MyField, 10, 20, null)
Это также можно использовать с меньшими усилиями, которые я считаю (но я в MVC 5)
@Html.Description(model => model.Story, 20, 50, new { })
Один из вариантов, похоже, использует CSS для стиля textarea
.multi-line { height:5em; width:5em; }
Смотрите эту запись в формате SO или этот.
Принимаемый ответ Амурры, по-видимому, подразумевает, что этот класс добавляется автоматически при использовании редактора, но вам нужно будет это проверить.
РЕДАКТИРОВАТЬ: Это подтверждается. Так что да, если вы хотите использовать EditorFor, использование этого стиля CSS делает то, что вы ищете.
<textarea class="text-box multi-line" id="StoreSearchCriteria_Location" name="StoreSearchCriteria.Location">
в mvc 5
@Html.EditorFor(x => x.Address,
new {htmlAttributes = new {@class = "form-control",
@placeholder = "Complete Address", @cols = 10, @rows = 10 } })