Если посмотреть реализацию метода TextAreaExtensions.TextArea()
, то видно, что в нем значения атрибутов установки размерности перекрываются значениями по умолчанию:
private const int TextAreaRows = 2;
private const int TextAreaColumns = 20;
// ...
public static string TextArea(
this HtmlHelper htmlHelper, string name,
IDictionary<string, object> htmlAttributes) {
Dictionary<string, object> implicitAttributes = new Dictionary<string, object>();
implicitAttributes.Add("rows", TextAreaRows.ToString(CultureInfo.InvariantCulture));
implicitAttributes.Add("cols", TextAreaColumns.ToString(CultureInfo.InvariantCulture));
return TextAreaHelper(htmlHelper, name, true /* useViewData */, null /* value */, implicitAttributes, null /* explicitParameters */, htmlAttributes);
}
Поэтому указывать rows
и cols
в атрибутах бесполезно. Нужно использовать один из методов:
public static string TextArea(
this HtmlHelper htmlHelper, string name, string value,
int rows, int columns,
IDictionary<string, object> htmlAttributes);
или
public static string TextAreaFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
int rows, int columns,
IDictionary<string, object> htmlAttributes)
Оба метода для определения дополнительных атрибутов принимают словарь, а не анонимный объект, поэтому придется писать что-то типа этого:
<%=Html.TextAreaFor(
m => m.Description, 15, 20,
new RouteValueDictionary(new { @class = "someClass"}))%>