У меня есть отношения "многие ко многим" между Student
и Course
. Набор связывающих объектов: Enrollment
. Для простоты все они определяются следующим образом.
Модели
public class Course
{
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
public class Enrollment
{
public int Id { get; set; }
public int StudentId { get; set; }
public int CourseId { get; set; }
public virtual Student Student { get; set; }
public virtual Course Course { get; set; }
}
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
ViewModels
public class StudentCourseVM
{
public Student Student { get; set; }
public IEnumerable<Course> SelectedCourses { get; set; }
public IEnumerable<Course> AvailableCourses { get; set; }
}
Контроллеры
public IActionResult Create()
{
var availableCourses = context.Courses;
return View(new StudentCourseVM { AvailableCourses = availableCourses });
}
[HttpPost]
public async Task<IActionResult> Create(StudentCourseVM sc)
{
if (ModelState.IsValid)
{
// What should I do here?
// ======================
await context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(sc);
}
Просмотры
@model MasterDetails.ViewModels.StudentCourseVM
<form asp-action="Create">
<div>
<label asp-for="@Model.Student.Name"></label>
<input asp-for="@Model.Student.Name" />
</div>
<div>
<label asp-for="@Model.Student.Enrollments"></label><br />
@foreach (var course in Model.AvailableCourses)
{
<input type="checkbox" name="@course.Title" id="@course.Id" /> @course.Title <br />
}
</div>
<input type="submit" value="Create" />
</form>
Вопросы
Как узнать выбранные флажки из метода действия HttpPost Create
?