// GET: ttn_content/ExamContent/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SATExamContent sATExamContent = db.SATExamContents.Find(id); if (sATExamContent == null) { return(HttpNotFound()); } ViewBag.ExamFormID = new SelectList(db.SATExamForms.Where(ef => ef.Status == true), "ID", "Title", sATExamContent.ExamFormID); var listUnSetExamContentIDQuestion = new SelectList(db.SATQuestions.Where(q => q.ExamContentID == null && q.SATWritingUnderlineTexts.Any(u => u.QuestionID == q.ID) == false).ToList(), "ID", "Title"); ViewBag.ListQuestion = listUnSetExamContentIDQuestion; var viewModel = new ExamContentEditViewModel(sATExamContent); return(View(viewModel)); }
public ActionResult Edit(ExamContentEditViewModel viewModel, int id, FormCollection collection) { var contentLines = collection.GetValues("inputLine") != null?collection.GetValues("inputLine").ToList() : new List <string>(); ViewBag.ContentLines = contentLines; ViewBag.ExamFormID = new SelectList(db.SATExamForms, "ID", "Title", viewModel.ExamContent.ExamFormID); var listUnSetExamContentIDQuestion = new SelectList(db.SATQuestions.Where(q => q.ExamContentID == null && q.SATWritingUnderlineTexts.Any(u => u.QuestionID == q.ID) == false).ToList(), "ID", "Title"); ViewBag.ListQuestion = listUnSetExamContentIDQuestion; if (ModelState.IsValid) { using (var dbTransaction = db.Database.BeginTransaction()) { try { if (viewModel.ContentLines == null && contentLines.Count > 0) { //delete old lines var oldLines = db.SATContentLines.Where(l => l.ExamContentID == id); db.SATContentLines.RemoveRange(oldLines); db.SaveChanges(); //add new lines var index = 0; foreach (var item in contentLines) { var line = new SATContentLine(); line.LineIndex = index; index = (index + 1); line.LineText = item; line.ExamContentID = id; line.rowguid = Guid.NewGuid(); db.SATContentLines.Add(line); db.SaveChanges(); } } else if (viewModel.ContentLines != null) { var index = 0; foreach (var item in viewModel.ContentLines) { item.LineIndex = index; index = (index + 1); db.Entry(item).State = EntityState.Modified; db.SaveChanges(); } } db.Entry(viewModel.ExamContent).State = EntityState.Modified; db.SaveChanges(); dbTransaction.Commit(); return(RedirectToAction("Index")); } catch (Exception ex) { dbTransaction.Rollback(); ViewBag.ExamFormID = new SelectList(db.SATExamForms.Where(ef => ef.Status == true), "ID", "Title", viewModel.ExamContent.ExamFormID); ViewBag.ContentLines = contentLines; return(View(viewModel)); } } } return(View(viewModel)); }