public ActionResult Edit(Guid id, MetaViewModel model, List <MetaViewColumnModel> columns, string button) { using (DBEntities context = Settings.CreateDataContext()) { Validate(context, model); if (!ModelState.IsValid) { return(View(model)); } MetaView target = null; if (model.Id != Guid.Empty) { target = MetaViewHelper.Get(model.Id, context); if (target == null) { ModelState.AddModelError("", Resources.Resource.RowNotFound); return(View(model)); } } else { target = new MetaView { Id = Guid.NewGuid() }; context.AddToMetaView(target); } MetaViewModel.CreateMap(); Mapper.Map(model, target); if (columns != null) { SyncViewColumns(target, columns, context); } try { context.SaveChanges(); } catch (Exception ex) { var sb = new StringBuilder(Resources.Resource.SaveError + ": " + ex.Message); if (ex.InnerException != null) { sb.AppendLine(ex.InnerException.Message); } ModelState.AddModelError("", sb.ToString()); return(View(model)); } if (button == "SaveAndExit") { return(RedirectToAction("Index")); } else { return(RedirectToAction("Edit", new { target.Id })); } } }