public ActionResult UpdateUnitSorting(int id) { var didacheDb = new DidacheDb(); string data = HttpUtility.UrlDecode(Request.Form.ToString()); //dynamic newValue = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Dynamic.>(data); var reader = new JsonFx.Json.JsonReader(); dynamic output = reader.Read(data); foreach (var unitInfo in output) { // get and update the unit Unit unit = didacheDb.Units.Find(unitInfo.unitid); unit.SortOrder = unitInfo.sortorder; foreach (var taskInfo in unitInfo.tasks) { // get and update the task Task task = didacheDb.Tasks.Find(taskInfo.taskid); task.SortOrder = taskInfo.sortorder; } } string errorMessage = ""; bool success = false; try { didacheDb.SaveChanges(); success = true; } catch { var entries = didacheDb.GetValidationErrors(); foreach (var entry in entries) { errorMessage += "[" + entry.Entry.Entity.ToString() + "]\n"; foreach (var error in entry.ValidationErrors) { errorMessage += error.PropertyName + " = " + error.ErrorMessage + "; "; } } } return Json(new { success = success, errorMessage = errorMessage}); }