Я получил ProductModel
с недвижимостью public ProductCategoryModel Category { get; set; }
. ProductCategoryModel
- это, очевидно, набор категорий, которые будут добавляться или удаляться динамически. Поэтому во время создания/редактирования ProductModel
мне нужен раскрывающийся список с 1-значным именем с существующими категориями. Могу ли я использовать @Html.EditorFor(...)
для этой цели?Как отредактировать массив proreprty через встроенный @ Html.EditorFor (..)?
Решения, которые я перехожу на сейчас
@Html.DropDownList(
"CategoryTitle",
SelectListGenerator.GenerateFrom(categoires, i => i.Title, i => i.Title),
new { htmlAttributes = new {
@class = "form-control",
@data_val = "true",
@data_val_required = "Не выбрана категория!",
@id = "CategoryTitle",
@name = "CategoryTitle"
} })
Потому что она возвращает не в ProductCategoryModel
объект, а просто строка - имя его, я вынужден сделать дополнительную работу в моем контроллере:
public ActionResult Create(CreateProduct_ViewModel vm)
{
vm.ProductModel.Category = _productCategoryEntities.ByName(vm.CategoryTitle);
ValidateModel(vm);
if (ModelState.IsValid)
{
_productEntities.Products.Add(vm.ProductModel);
_productEntities.SaveChanges();
return RedirectToAction(nameof(Index));
}
return View(vm);
}
Этот код выглядит довольно грязным и деффициентом.
Итак, еще раз, во время создания нового ProductModel
Мне нужен раскрывающийся список, в котором можно выбрать существующую категорию, а не форму для создания новой (это по умолчанию для @Html.EditorFor(...)
). И я хочу получить объект ProductModel
в свой метод Create(...)
, поэтому он выглядит как Create(ProductModel model)
в пределах назначенного Category
собственности, таким образом избегая этого vm.ProductModel.Category = _productCategoryEntities.ByName(vm.CategoryTitle);
.
Почему бы не использовать раскрывающееся меню категории? Вы можете сделать «множественный» выбор, если необходимо – Shyju
@Shyju Потому что он не связывает свойство категории должным образом. Он всегда равен нулю. Более того, если я отмечаю его как [Обязательный], он выдает исключение. –