Подтвердить что ты не робот

Как указать столбцы и строки многострочного редактора-для в ASP.MVC?

В 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>

Как установить строки и столбцы?

4b9b3361

Ответ 1

Использовать TextAreaFor

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

или используйте стиль для класса multi-line.

Вы также можете написать EditorTemplate для этого.

Ответ 2

В 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)

Ответ 3

Это также можно использовать с меньшими усилиями, которые я считаю (но я в MVC 5)

@Html.Description(model => model.Story, 20, 50, new { })

введите описание изображения здесь

Ответ 4

Один из вариантов, похоже, использует CSS для стиля textarea

.multi-line { height:5em; width:5em; }

Смотрите эту запись в формате SO или этот.

Принимаемый ответ Амурры, по-видимому, подразумевает, что этот класс добавляется автоматически при использовании редактора, но вам нужно будет это проверить.

РЕДАКТИРОВАТЬ: Это подтверждается. Так что да, если вы хотите использовать EditorFor, использование этого стиля CSS делает то, что вы ищете.

<textarea class="text-box multi-line" id="StoreSearchCriteria_Location" name="StoreSearchCriteria.Location">

Ответ 5

в mvc 5

              @Html.EditorFor(x => x.Address, 
              new {htmlAttributes = new {@class = "form-control", 
                   @placeholder = "Complete Address", @cols = 10, @rows = 10 } })