public class EditEmployeeVm
{public int Id { set; get; }public string Name { get; set; }public List<SelectListItem> Courses { get; set; }public int[] CourseIds { set; get; }public List<CourseVm> ExistingCourses { set; get; }}
public class CourseVm
{public int Id { set; get; }public string Name { set; get; }}
in edit function get i pass data to edit view
public ActionResult Edit(int id)
{var vm = new EditEmployeeVm { Id = id };var emp = db.Employees.FirstOrDefault(f => f.Id == id);
vm.Name = emp.Name;
vm.ExistingCourses = db.EmployeeCourses
.Where(g => g.EmployeeId == id)
.Select(f => new CourseVm
{Id = f.Id,
Name = f.Course.CourseName
}).ToList();
vm.CourseIds = vm.ExistingCourses.Select(g => g.Id).ToArray();
vm.Courses = db.Courses.Select(f => new SelectListItem
{Value = f.Id.ToString(),
Text = f.CourseName
}).ToList();
return View(vm);
}
[HttpPost]
public ActionResult Edit(EditEmployeeVm model)
{var emp = db.Employees.FirstOrDefault(f => f.Id == model.Id);
foreach (EmployeeCourse eec in emp.EmployeeCourses.ToList())
{var ec = db.EmployeeCourses.Find(eec.Id);
db.EmployeeCourses.Remove(ec);
db.SaveChanges();
}
foreach (var couseid in model.CourseIds)
{db.EmployeeCourses.Add(new EmployeeCourse { CourseId = couseid, EmployeeId = emp.Id });db.SaveChanges();
}
return View();
}