В действии контроллера, отображающем это представление, убедитесь, что вы создали экземпляр зависимого свойства (Product
в вашем случае), чтобы оно не было нулевым:
нерабочий пример:
public ActionResult Foo()
{
var model = new MyViewModel();
return View(model);
}
Рабочий пример:
public ActionResult Foo()
{
var model = new MyViewModel
{
Product = new ProductViewModel()
};
return View(model);
}
Другая возможность (и та, которую я рекомендую) состоит в том, чтобы украсить свойство модели представления атрибутом [DataType]
, указывающим ваше намерение отобразить его в виде многострочного текста:
[Required(ErrorMessage = "Please Enter Short Desciption")]
[StringLength(200)]
[DataType(DataType.MultilineText)]
public string ShortDescription { get; set; }
и в представлении используйте помощник EditorFor
:
@Html.EditorFor(x => x.Product.ShortDescription)
Что касается параметров rows
и cols
, о которых вы выражали беспокойство в своем вопросе, вы можете просто использовать CSS для установки ширины и высоты текстовой области. Например, вы можете поместить эту текстовую область в div или что-то с заданным именем класса:
<div class="shortdesc">
@Html.EditorFor(x => x.Product.ShortDescription)
@Html.ValidationMessageFor(x => x.Product.ShortDescription)
</div>
и в своем CSS-файле определите его размеры:
.shortdesc textarea {
width: 150px;
height: 350px;
}