У меня есть текстовое поле, которое я хочу расширить и добавить несколько строк, чтобы сделать его текстовой областью, а не маленькой.
исходный код
@Html.EditorFor(x => x.emailBody)
<input type="submit" value="Send Mail" class="btn btn-default" />
Я нашел это на SOF, но он не работает, и поле выглядит одинаково
@Html.EditorFor(x => x.emailBody, new { @class = "form-control", @rows = 5 })
<input type="submit" value="Send Mail" class="btn btn-default" />
Может ли кто-нибудь предложить простое решение?
Добавьте атрибут DataType.MultilineText
к свойству и @Html.EditorFor()
будет отображать <textarea>
вместо <input type="text"../>
[DataType(DataType.MultilineText)]
public string emailBody { get; set; }
Обратите внимание также (если вы используете MVC-5. 1+), то для добавления атрибутов html это должно быть
@Html.EditorFor(x => x.emailBody, new { htmlAttributes = new { @class = "form-control", @rows = 5 } })
Если у вас есть только MVC-5, используйте @Html.TextAreaFor()
или создайте пользовательский EditorTemplate
и передайте атрибуты в виде AdditionalViewData
(пример здесь)
@Html.TextAreaFor(model => model.emailBody, new { @rows = 3 })
вы можете использовать textarea для и устанавливать строки в соответствии с вашим выбором, тем лучше, чем увеличивать линейку обычного текстового поля....
Почему вы не можете использовать что-то вроде этого?
@Html.TextAreaFor(model => model.emailBody, new { @rows = 3 })
вместо EditorFor, вы можете использовать TextAreaFor для получения нескольких строк в текстовом поле
@Html.EditorFor(x => x.emailBody, new { htmlAttributes = new { @class = "form-control", @rows = 5 } })
противном случае вы должны использовать@Html.TextAreaFor()
или создать пользовательскийEditorTemplate