public ActionResult Edit(string id, FormCollection form) { try { // If the user leaves the password field blank, turn off the validation // and let the model ignore the change if (form["Password"].Length > 0) { if (form["Password"] != form["ConfirmPassword"]) ModelState.AddModelError("", "The supplied passwords do not match"); if (form["Password"].Length < 6) ModelState.AddModelError("Password", "Your password must be at least 6 characters"); } Models.User user = new Models.User(id); UpdateModel(user); if (!ModelState.IsValid) throw new InvalidOperationException("Input failed model validation"); user.Save(); user.ClearPermissions(); foreach (string permission in form["permission"].Split(',')) user.AddPermission(permission); return RedirectToAction("Index"); } catch { ViewData["PermissionList"] = Models.Permission.SelectAll().Select(o => o.PermissionId); return View(new Models.User(id)); } }