Получаю эту странную «ошибку». Когда я запускаю свое приложение (обновляю действие i.e), я получаю повторяющиеся значения, хранящиеся в моем дБ. Если я использую отладчик, шаг за шагом, его работу (без дубликатов) ...Дубликаты во время выполнения MVC4 Entity Framework
Это отношение «многие ко многим», поэтому не мешайте значениям курса 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 назад. Все хорошо.
Мои старые значения от дБ. Я хочу обновить эти данные. Так что все еще хорошо ...
Мои старые значения обновляются моим новым ценностям. Большой!
Ok все отлично работает, если я ступаю с отладчиком, как это. Но если я запустил приложение, я получу дубликаты ... Кто-нибудь?
Новое содержание:
My Edit ракурса
@model ValueInjecter.Web.Models.CourseStudentViewModel
@ { ViewBag.Title = "Edit"; }
Edit Course
@using (Html.BeginForm()) { @ Html.HiddenFor (с => Model.CourseId) @ Html.LabelFor (с => Model.CourseName) @ Html.EditorFor (с => 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> }
ОК Спасибо за ваш ответ. Моя коллекция (курс. Студенты) не пуста. Его дублируют. Старые значения из db и новые значения из пользовательского интерфейса (текстовые поля). Я добавил свое мнение. Я оценил, что если вы можете дать мне некоторое руководство, потому что я не могу получить отношение «многие ко многим» к работе ... и значение, которое вы видите, - это просто пространство имен. Когда я создал проект, я сначала пытался работать с автоматом. – JeppePepp
@JeppePepp: Пробовал ли вы это с помощью «Include» в моем ответе выше? Разве это не работало? – Slauma
невозможно использовать лямбда внутри внутреннего удлинителя. Вы можете использовать только строковый путь. Так что нет, это не сработало. Thx для вашего времени. Но все равно не получайте его на работу ... – JeppePepp