How do I specify the columns and rows of a multiline Editor-For in ASP.MVC?
Solution 1:
Use TextAreaFor
@Html.TextAreaFor(model => model.Description, new { @class = "whatever-class", @cols = 80, @rows = 10 })
or use style for multi-line
class.
You could also write EditorTemplate for this.
Solution 2:
In ASP.NET MVC 5 you could use the [DataType(DataType.MultilineText)]
attribute. It will render a TextArea tag.
public class MyModel
{
[DataType(DataType.MultilineText)]
public string MyField { get; set; }
}
Then in the view if you need to specify the rows you can do it like this:
@Html.EditorFor(model => model.MyField, new { htmlAttributes = new { rows = 10 } })
Or just use the TextAreaFor with the right overload:
@Html.TextAreaFor(model => model.MyField, 10, 20, null)
Solution 3:
This one can also be used with less effort I believe (but I am in MVC 5)
@Html.Description(model => model.Story, 20, 50, new { })
Solution 4:
One option seems to be using CSS to style the textarea
.multi-line { height:5em; width:5em; }
See this entry on SO or this one.
Amurra's accepted answer seems to imply this class is added automatically when using EditorFor but you'd have to verify this.
EDIT: Confirmed, it does. So yes, if you want to use EditorFor, using this CSS style does what you're looking for.
<textarea class="text-box multi-line" id="StoreSearchCriteria_Location" name="StoreSearchCriteria.Location">