// GET: Articles/Create public ActionResult Create() { ViewModels.ArticleViewModel vm = new ViewModels.ArticleViewModel(); vm.AllTopics = db.Topics.Select(c => new SelectListItem { Text = c.Name, Value = c.ID.ToString() }).ToList(); vm.AllAuthors = db.Authors.Select(c => new SelectListItem { Text = c.FirstName + " " + c.MiddleName + " " + c.LastName, Value = c.ID.ToString() }).ToList(); return(View(vm)); }
public ActionResult Edit([Bind(Include = "ID,Name,SelectedTopicIds,SelectedAuthorId,DateCreated,DateUpdated")] ViewModels.ArticleViewModel articleVM) { if (ModelState.IsValid) { Article existingArticle = db.Articles.Find(articleVM.ID); existingArticle.ID = articleVM.ID; existingArticle.Name = articleVM.Name; //existingArticle.DateCreated = articleVM.DateCreated; existingArticle.DateUpdated = DateTime.Today; //existingArticle.Topics = db.Topics.Where(c => articleVM.SelectedTopicIds.Contains(c.ID)).ToList(); existingArticle.Author = db.Authors.Where(c => articleVM.SelectedAuthorId.Equals(c.ID)).SingleOrDefault(); var existingTopicIds = existingArticle.Topics.Select(c => c.ID); var deletedTopicIds = existingTopicIds.Except(articleVM.SelectedTopicIds).ToList(); var addedTopicIds = articleVM.SelectedTopicIds.Except(existingTopicIds); foreach (var item in deletedTopicIds) { var deletedItem = db.Topics.Where(c => c.ID == item).SingleOrDefault(); existingArticle.Topics.Remove(deletedItem); } foreach (var item in addedTopicIds) { var addedItem = db.Topics.Where(c => c.ID == item).SingleOrDefault(); existingArticle.Topics.Add(addedItem); } db.Entry(existingArticle).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(articleVM)); }