// GET: Secrets/Edit/5 public ActionResult Edit(short?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Secret secret = db.Secrets.Find(id); if (secret == null) { return(HttpNotFound()); } ViewBag.IsAboutId = new SelectList(db.Infos, "InfoId", "Name", secret.IsAboutId); List <short> selectedTags = db.SecretSecretTags.Where(s => s.SecretId == id).Select(s => s.SecretTagId).ToList(); SecretEditVM model = new SecretEditVM(secret); ViewBag.Tags = db.SecretTags.ToList(); ViewBag.Selected = selectedTags; return(View(model)); }
public ActionResult Edit([Bind(Include = "SecretId,IsAboutId,TheContent")] SecretEditVM secret, List <short> tags) { if (ModelState.IsValid) { #region Update Tags short secretId = secret.SecretId; List <short> currentTagIds = db.SecretSecretTags.Where(x => x.SecretId == secretId).Select(x => x.SecretTagId).ToList(); if (tags != null) { foreach (short tag in tags) { if (true) { //if this is an already existing tag if (currentTagIds.Contains(tag)) { currentTagIds.Remove(tag); } //if this is a newly added tag else { SecretSecretTag newTag = new SecretSecretTag { SecretId = secretId, SecretTagId = tag }; db.SecretSecretTags.Add(newTag); } } } } if (currentTagIds.Count != 0) { foreach (short id in currentTagIds) { SecretSecretTag gone = db.SecretSecretTags.Where(x => x.SecretId == secretId & x.SecretTagId == id).FirstOrDefault(); db.SecretSecretTags.Remove(gone); } } #endregion #region Update Secret Secret daSecret = new Secret { SecretId = secret.SecretId, IsAboutId = secret.IsAboutId, TheContent = secret.TheContent }; db.Entry(secret).State = EntityState.Modified; db.SaveChanges(); #endregion return(RedirectToAction("Index")); } ViewBag.IsAboutId = new SelectList(db.Infos, "InfoId", "Name", secret.IsAboutId); ViewBag.Tags = db.SecretTags.ToList(); if (tags != null) { ViewBag.Selected = tags; } else { ViewBag.Selected = new List <short>(); } return(View(secret)); }