コード例 #1
0
        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);

        }
コード例 #2
0
        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);

        }
コード例 #3
0
 protected ActionResult GetErrorResponse(Exception ex, MvcOptionsAttribute options)
 {
     return this.GetErrorResponse(ex, options, null);
 }
コード例 #4
0
 protected ActionResult Error(Exception ex, MvcOptionsAttribute options = null, Object viewModel = null)
 {
     return Request.IsAjaxRequest() ? GetAjaxErrorResponse(ex, options, viewModel) : GetErrorResponse(ex, options, viewModel);
 }
コード例 #5
0
 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;
 }