コード例 #1
0
        public ActionResult Er404(string msg)
        {
            var ex = new EntityNotFoundException();

            if (Request.IsAjaxRequest())
            {
                var json = new JsonHttpStatusResult(ex.ExceptionData, ex.HttpStatus);
                json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                return(json);
            }
            return(View(ex.ExceptionData));
        }
コード例 #2
0
        protected virtual ActionResult CreateActionResult(ExceptionContext filterContext, HttpStatusCode statusCode)
        {
            var ctx            = new ControllerContext(filterContext.RequestContext, filterContext.Controller);
            var statusCodeName = statusCode.ToString();



            var    controllerName = (string)filterContext.RouteData.Values["controller"];
            var    actionName     = (string)filterContext.RouteData.Values["action"];
            var    model          = new HandleErrorInfo(filterContext.Exception, controllerName, actionName);
            var    ex             = (model.Exception as AppException) == null ? null : (model.Exception as AppException).ExceptionData;
            string viewName       = null;

            try
            {
                viewName = SelectFirstView(ctx,
                                           string.Format("~/Views/Errors/{0}.cshtml", statusCodeName),
                                           "~/Views/Errors/Error.cshtml",
                                           statusCodeName,
                                           "Error");
            }
            catch (InvalidOperationException)
            {
                //view not found
                viewName = null;
            }
            //if ajax request
            if (filterContext.HttpContext.Request.IsAjaxRequest() || string.IsNullOrEmpty(viewName))
            {
                var json = new JsonHttpStatusResult(ex, statusCode);
                json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                return(json);
            }
            //else render view
            else
            {
                var result = new ViewResult
                {
                    ViewName = viewName,
                    ViewData = new ViewDataDictionary <ExceptionModelBase>(ex),
                };
                result.ViewBag.StatusCode = statusCode;
                return(result);
            }
        }