Wie erkennt man die ausgewählten Kontrollkästchen in der Aktionsmethode "HttpPost Create"?
Ich habe viele-zu-viele-Beziehung zwischenStudent
undCourse
. Die Verknüpfungsentitätsgruppe istEnrollment
. Der Einfachheit halber sind sie alle wie folgt definiert.
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; }
}
ViewModelspublic class StudentCourseVM
{
public Student Student { get; set; }
public IEnumerable<Course> SelectedCourses { get; set; }
public IEnumerable<Course> AvailableCourses { get; set; }
}
Controller 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);
}
Views@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>
FrageSo erkennen Sie die ausgewählten Kontrollkästchen in HttpPostCreate
Aktionsmethode?