Замена для TextArea для кода в Asp.net MVC Razor - PullRequest
2 голосов
/ 04 января 2012

Ниже приведено свойство моей модели

[Required(ErrorMessage = "Please Enter Short Desciption")]
[StringLength(200)]
public string ShortDescription { get; set; }

И ниже приведен мой соответствующий код представления

@Html.TextAreaFor(model => model.Product.ShortDescription, new { cols = "50%", rows = "3" })
@Html.ValidationMessageFor(model => model.Product.ShortDescription)

И вот как это отображается в браузере, как я хочу.enter image description here

Теперь, поскольку в выпуске MVC3 Microsoft есть ошибка , я не могу проверить, и форма отправлена ​​и выдает досадную ошибку.Пожалуйста, скажите мне, как можно обойти или любой код, который может быть заменен вместо TextAreaFor.Я не могу использовать EditorFor, потому что с ним я не могу использовать параметр rows и cols.Я хочу сохранить мой вид поля в браузере.Дайте мне знать, что нужно сделать в этом случае

1 Ответ

4 голосов
/ 04 января 2012

В действии контроллера, отображающем это представление, убедитесь, что вы создали экземпляр зависимого свойства (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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...