Как указать столбцы и строки многострочного Editor-For в ASP.MVC? - PullRequest
66 голосов
/ 02 июня 2011

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

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

Ответы [ 6 ]

131 голосов
/ 02 июня 2011

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

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

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

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

26 голосов
/ 02 октября 2014

В 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)
8 голосов
/ 22 октября 2015

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

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

enter image description here

5 голосов
/ 02 июня 2011

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

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

См. эту запись на SO или эту.

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

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

<textarea class="text-box multi-line" id="StoreSearchCriteria_Location" name="StoreSearchCriteria.Location">
0 голосов
/ 09 мая 2018

В .net VB - вы можете получить контроль над столбцами и строками с помощью следующего в вашем файле бритвы:

0 голосов
/ 22 сентября 2016

в мвк 5

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