こんにちは、私はこの問題に長い間立ち往生してきました。多くの例を見てきましたが、探しているものが見つかりません。どんな助けでも大歓迎です。
私は Code-First アプローチを使用しています。
移行を有効にしましたが、データベースは問題ありません [Student] - [StudentCourse] - [Course]。
シナリオ: 私は 2 つのエンティティを持っています -> 学生
public class Student { public int Id { get; set; } public string Name { get; set; } public virtual List<Course> Courses { get; set; } }
とコース
public class Course { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public virtual List<Student> Students { get; set; } }
それについて空想は何もありません...私はViewModelを作成しました->
public class StudentCourseViewModel { public int Id { get; set; } public string Name { get; set; } public List<Course> Courses { get; set; } }
意見:
@model Project.Web.Models.StudentCourseViewModel @{ ViewBag.Title = "編集"; }
編集
@using (Html.BeginForm()) { @Html.ValidationSummary(true)
<fieldset> <legend>Student</legend> @Html.HiddenFor(model => model.Id) <div class="editor-label"> @Html.LabelFor(model => model.Name) </div> <div class="editor-field"> @Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name) </div> <div class="editor-label"> @Html.LabelFor(model => model.Courses) </div> <div class="editor-field"> @for (int i = 0; i < Model.Students.Count(); i++) { <div style="border: dotted 1px; padding: 5px; margin: 10px;"> @Html.HiddenFor(s => s.Students[i].Id) @Html.LabelFor(s => s.Students[i].Name[i + 1]) @Html.EditorFor(s => s.Students[i].Name) </div> } </div> <p> <input type="submit" value="Save" /> </p> </fieldset> }
コントローラーのアクション:
[HttpPost] public ActionResult Edit(CourseStudentViewModel model) { var course = db.Courses.Find(model.CourseId); course.Name = model.CourseName; course.Description = model.CourseDescription; course.Students = model.Students; if (ModelState.IsValid) { db.Entry(course).State = System.Data.EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(model); }
(多分これは私が間違っていた場合です...)
とにかく、オプションの多くのコースを持つ新しい学生を作成したい(テキストボックス - > courseName)
どうすればいいですか?
主な問題は、ビュー [httpPost]Create アクションから常に null 値 (学生は問題ありません。コースのリスト = NULL) が返されることです。
このアプローチを可能にする方法についてのガイダンスが必要です。
ありがとう!