public override void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.HttpContext.Request.IsAjaxRequest()) { var viewData = filterContext.Controller.ViewData; var response = filterContext.HttpContext.Response; foreach (var messageType in Enum.GetNames(typeof(NotificationMessageType))) { var mt = messageType + "Resources"; var message = viewData.ContainsKey(messageType) ? viewData[messageType] : null; var messageResources = viewData.ContainsKey(mt) ? viewData[mt] : null; if (message != null) // We store only one message in the http header. First message that comes wins. { if ((messageResources as string).IsNullOrEmpty() == false) { message = Errors.ResourceManager.GetString((string)messageResources); } NotificationMvcHelper.AjaxMessage(response, messageType, message.ToString()); viewData[mt] = null; return; } } } }
private void WebException(WebException webException) { _isRedirect = true; var message = NotificationMvcHelper.FormatMessage(webException.ErrorNumber, webException.MessageContent); if (_filterContext.RequestContext.HttpContext.Request.IsAjaxRequest()) { IsAjaxRequest(message, false); } else if (webException.RedirectToRouteResult != null) { _filterContext.Result = webException.RedirectToRouteResult; } else if (!ActionName.IsNullOrEmpty()) { _filterContext.Result = new RedirectToRouteResult(_routeValueDictionary); } else { GlobalError(message); } _controller.ShowMessage(NotificationMessageType.Error, message, _isRedirect); _filterContext.ExceptionHandled = true; }
private void IsAjaxRequest(string message, bool isRedirect) { _isRedirect = isRedirect; _filterContext.Result = new JsonResult { Data = new { success = false, error = message }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; NotificationMvcHelper.AjaxMessage(_filterContext.RequestContext.HttpContext.Response, NotificationMessageType.Error.ToString(), message); }
private void UnhandledException() { var message = NotificationMvcHelper.FormatMessage( ErrorNumbers.ErrorView, "ErrorView"); if (_filterContext.RequestContext.HttpContext.Request.IsAjaxRequest()) { IsAjaxRequest(message, false); } else { GlobalError(message); } _controller.ShowMessage(NotificationMessageType.Error, message, _isRedirect); _filterContext.ExceptionHandled = true; }
private void ApplicationLayerException(ApplicationLayerException applicationLayerException) { var message = NotificationMvcHelper.FormatMessage( applicationLayerException.ErrorNumber, applicationLayerException.MessageContent); if (_filterContext.RequestContext.HttpContext.Request.IsAjaxRequest()) { IsAjaxRequest(message, false); } else { GlobalError(message); } _controller.ShowMessage(NotificationMessageType.Error, message, _isRedirect); _filterContext.ExceptionHandled = true; }