我得到这个奇怪的“错误”。当我运行我的应用程序(编辑操作,即更新)时,我得到了存储在我的 dB 中的重复值。如果我一步一步地使用调试器,它的工作(没有重复)......
这是一个多对多的关系,所以不要打扰图像中的 Courses NULL 值,只是想弄清楚......
感谢所有帮助!
[HttpPost] public ActionResult Edit(CourseStudentViewModel model) { var course = db.Courses .Where(c => c.Id == model.CourseId) .Single(); if (ModelState.IsValid) { course.Name = model.CourseName; course.Description = model.CourseDescription; course.Students = model.Students; if(course.Id != 0) { db.Entry(course).State = System.Data.EntityState.Modified; } else { db.Courses.Add(course); } db.SaveChanges(); return RedirectToAction("Index"); } //modelstate not valid, display form return View(model); }
我拿回了我的 viewModel。都好。
我的旧值来自 dB。我想更新这些数据。所以一切都还好...
我的旧价值观更新为我的新价值观。伟大的!
好的,如果我像这样使用调试器,一切都会很好。但是,如果我运行该应用程序,我会得到重复的......有人吗?
新内容:
我的编辑视图
@model ValueInjecter.Web.Models.CourseStudentViewModel
@{ ViewBag.Title = "编辑"; }
编辑课程
@using (Html.BeginForm()) { @Html.HiddenFor(c => Model.CourseId) @Html.LabelFor(c => Model.CourseName) @Html.EditorFor(c => Model.CourseName)
@Html.LabelFor(c => Model.CourseDescription) @Html.EditorFor(c => Model.CourseDescription) </div> <hr /> <h2>Students</h2> <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> Number of Students: <b>@Html.DisplayFor(s => Model.StudentCount)</b> </p> <hr /> <p> <input type="submit" value="Save" /> </p> }