예제 #1
0
        // 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));
        }
예제 #2
0
        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));
        }