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

Asp.net MVC TextArea

Как размер TextArea и присвоить ему значение модели в Asp.net Mvc

4b9b3361

Ответ 1

Попробуйте следующее:

 <%=Html.TextAreaFor(
        m => m.Description, 15, 20, 
        new RouteValueDictionary(new { @class = "someClass"}))%>

Edit:
Это не работает, насколько я знаю.

<%=Html.TextAreaFor(m => m.Description, new { cols = "20", rows = "15" })%>

из-за этого:

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

}

Ответ 2

Я нашел простой способ достичь этого.

Использование аннотационной бритвы моделей будет достаточно умным, чтобы сгенерировать textarea.

Модель:

[DataType(DataType.MultilineText)]
public string Comments { get; set; }

Вид:

@Html.EditorFor(model => model.Comments)

Ответ 3

Предполагая, что у вас есть строго типизированное представление для некоторого класса модели, вы можете использовать следующее:

<%= Html.TextAreaFor(x => x.SomeProperty, new { rows = "20", cols = "10" }) %>

или

<%= Html.TextAreaFor(x => x.SomeProperty, 20, 10, new { @class = "foo" }) %>

Ответ 4

Pitfall - @Html.TextAreaFor, потому что у него нет перегрузки, которая позволяет вам присваивать значение модели.

Пример 1:

 @Html.TextAreaFor(m => m.Language, 6, 40, new { @class = "form-control",@value="Tft.WebRole.Properties.Settings.Default.DefaultLanguage"}

Пример 1 не будет создавать исключение и не будет показывать какой-либо текст. Опусти его.

Решение:

используйте @Html.TextArea вместо

Пример 2:

@Html.TextArea("Language", Tft.WebRole.Properties.Settings.Default.DefaultLanguage, 6, 40, new { @class = "form-control" })

Совет:

Вы также должны понижать Aspx, потому что Razor является более легким и эквивалентным синтаксисом.

Просто используйте @ вместо <%= %>.