Я начал изучать структуру сущностей и asp.net и хотел использовать все операции CRUD.У меня есть модели задач и категорий, и они находятся во многих отношениях.В моей базе данных есть 3 таблицы: 1. Task (содержит Id, Title, Description ..), 2. Category (содержит categoryId и categoryName) и 3. TaskCategory (содержит Id (taskId) и categoryId).
Мне удалось сделать все, что я хотел, кроме добавления нескольких категорий в задачу, используя выпадающий список.Я создал выпадающий список и загрузил категории, и я знаю, как добавить одну категорию в задачу (когда отношение равно 1: N) (asp-for="CategoryId"
).Для множественного выбора я попытался использовать selectedCategories
(список целых чисел - идентификаторов) вместо CategoryId, но я не знаю, что делать с этим списком.Как объединить категорию и задачу в TaskCategory при сохранении задачи в контроллере (другими словами: как сохранить категории в задачу)?
AddTask.cshtml
<div class="form-group">
<label class="control-label">Category</label>
<select class="select-picker" asp-for="selectedCategories"
asp-items="@(new SelectList(Model.Categories, "CategoryId", "CategoryName"))" multiple>
</select>
</div>
<script>
...
$('.select-picker').selectpicker('toggle');
</script>
HomeController.cs
public IActionResult AddTask()
{
var categories = _categoryRepository.GetAllCategories().OrderBy(c => c.CategoryName);
var taskCategories = _taskCategoryRepository.GetAllTaskCategories().OrderBy(tc => tc.Id);
var homeViewModel = new HomeViewModel()
{
Task = null,
TaskCategory = null,
Categories = categories.ToList(),
TaskCategories = taskCategories.ToList(),
selectedCategories = new List<int>()
};
return View(homeViewModel);
}
[HttpPost]
public IActionResult AddTask(Task task, List<int> selected)
{
// foreach (var selectedCategoryId in selected)
// {
//
// }
_taskRepository.AddTask(task);
return RedirectToAction("Index");
return View();
}
Таким образом я получаю Задачу в базе данных, но, конечно, без какой-либо сохраненной категории.