OK Я использую MVC 4 с Bootstrap и сталкиваюсь с проблемой с TextAreaFor и столбцами. По умолчанию, если вы не устанавливаете col/row, система по умолчанию использует 2/10. Очевидно, что если вы введете строку/col, она будет использовать это. Проблема в том, что формы, использующие Bootstraper, лучше, если вы просто оставите его пустым. Любой придумал хороший способ отключить col для TextAreaFor.Отключить cols с TextAreaFor
@Html.TextAreaFor(m=> m.Comments, new { htmlAttributes = new { @class = "form-control" } })
выходы:
<textarea cols="20" htmlAttributes="{ class = form-control }" id="Comments" name="Comments" rows="2"></textarea>
, но я хочу это:
<textarea htmlAttributes="{ class = form-control }" id="Comments" name="Comments" rows="2"></textarea>
Это, конечно, работает, но не дружит:
<textarea id="Comments" name="Comments" rows="10" class="form-control">@Model.Comments</textarea>
Edited - Ну хорошо, я создал собственный шаблон редактора как такового:
@{
string id = ViewData.ModelMetadata.PropertyName;
string rows = string.Empty;
if (ViewData["rows"] != null)
{
rows = string.Format("rows={0}", ViewData["rows"]);
}
}
<textarea id="@id" name="@id" @rows class="form-control">@Model</textarea>
Использование:
@Html.EditorFor(model => model.Comments, "TextAreaCustom", new { @rows = 10 })
Когда атрибут цв нет Bootstrap устанавливает текстовую область на 100% от деления, в котором он находится. Очевидно, когда col установлен, это та ширина, поэтому, если он формирует размер изменения, окно выглядит слишком маленьким или больше, чем экран. Я пытаюсь установить все свои формы для использования размеров xs/sm/md на основе размера браузера. –
Это моя точка: стили Bootstrap переопределяют атрибут, потому что они устанавливают явную ширину для текстового поля. Если этого не происходит, то стили Bootstrap каким-то образом воспитываются. Предполагая, что в textarea есть необходимый класс «form-control», ширина должна быть 100% от контейнера, независимо от того, какой набор «cols» установлен или если он вообще установлен. –