Student
とCourse
の間に多対多関係があります。リンクエンティティセットはEnrollment
です。簡略化のために、それらはすべて以下のように定義される。HttpPost Createアクションメソッド内から選択したチェックボックスを知るには?
モデル
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
アクションメソッド内から選択したチェックボックスを知るには?
具体的には、ポストにコントローラアクション内に含まれるチェックボックスの数を知りたいですか? –
@OscarOrtiz:提出されたデータを新しい学生として保存したい。しかし、どのチェックボックスをチェックするのかわかりません。 –