protected virtual ActionResult GetAjaxErrorResponse(Exception ex, MvcOptionsAttribute options, Object viewModel) { LogError(ex); ViewBag.Error = true; ViewBag.ErrorText = this.GetErrorMessage(ex, options); Response.StatusCode = 500; Response.TrySkipIisCustomErrors = true; if (ConfigurationHelper.Debug) return Json(new { errors = ViewBag.ErrorText, stackTrace = ex.StackTrace }, JsonRequestBehavior.AllowGet); else return Json(new { errors = ViewBag.ErrorText }, JsonRequestBehavior.AllowGet); }
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); }
protected ActionResult GetErrorResponse(Exception ex, MvcOptionsAttribute options) { return this.GetErrorResponse(ex, options, null); }
protected ActionResult Error(Exception ex, MvcOptionsAttribute options = null, Object viewModel = null) { return Request.IsAjaxRequest() ? GetAjaxErrorResponse(ex, options, viewModel) : GetErrorResponse(ex, options, viewModel); }
private IEnumerable<String> GetErrorMessage(Exception ex, MvcOptionsAttribute options) { List<String> errorMessage = new List<string>(); switch (this.RouteData.Values["Action"].ToString().ToLower()) { case "edit": if (options.NotNull() && options.EditErrorMessage.NotNull()) errorMessage.Add(options.EditErrorMessage); else errorMessage.AddRange(ex.BuildExceptionsMessageString()); break; case "create": if (options.NotNull() && options.CreateErrorMessage.NotNull()) errorMessage.Add(options.CreateErrorMessage); else errorMessage.AddRange(ex.BuildExceptionsMessageString()); break; case "delete": if (options.NotNull() && options.DeleteErrorMessage.NotNull()) errorMessage.Add(options.DeleteErrorMessage); else errorMessage.AddRange(ex.BuildExceptionsMessageString()); break; case "index": if (options.NotNull() && options.IndexErrorMessage.NotNull()) errorMessage.Add(options.IndexErrorMessage); else errorMessage.AddRange(ex.BuildExceptionsMessageString()); break; default: errorMessage.AddRange(ex.BuildExceptionsMessageString()); break; } return errorMessage; }