protected virtual ActionResult GetErrorResponse(Exception ex, MvcOptionsAttribute options, Object viewModel) { if (ex is ValidationException || ex is DbUnexpectedValidationException) { var validationEx = ex as ValidationException; this.ModelState.AddModelError(String.Empty, ex.Message); } else if (ex is DbEntityValidationException) { var exception = ex as DbEntityValidationException; foreach (var error in exception.EntityValidationErrors.SelectMany(ev => ev.ValidationErrors.Select(ve => ve))) { this.ModelState.AddModelError(error.PropertyName, error.ErrorMessage); } this.ModelState.AddModelError(String.Empty, ex.Message); } else if (ex is ApprovalNeededException) { var approvalException = (ApprovalNeededException)ex; var url = String.Format(ConfigurationHelper.ChangeSubmitUrl, approvalException.ChangeID); return this.AutoRedirect(url); } else { LogError(ex); if (ConfigurationHelper.Debug) throw ex; else { ViewBag.Error = true; Response.StatusCode = 500; ViewBag.ErrorText = this.GetErrorMessage(ex, options); } if (options.ReturnErrorViewOnError) { Session["ErrorText"] = ViewBag.ErrorText; return Redirect(ConfigurationHelper.DefaultErrorpage); } } if (viewModel.NotNull()) this.BaseRepository.MapRepoFunction(viewModel); return (ActionResult)this.View(viewModel); }