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