コード例 #1
0
        public FilterResult VerificarFiltros(ActionBindInfo actionBindInfo)
        {
            var methodInfo = actionBindInfo.MethodInfo;

            var atributos = methodInfo.GetCustomAttributes(typeof(FiltroAttribute), false);

            foreach (FiltroAttribute filtro in atributos)
            {
                if (!filtro.PodeContinuar())
                {
                    return(new FilterResult(false));
                }
            }

            return(new FilterResult(true));
        }
コード例 #2
0
        internal FilterResult VerificarFiltros(ActionBindInfo actionBindInfo)
        {
            var methodInfo = actionBindInfo.MethodInfo;

            // O segundo atributo define se sera pego Attributes das classes mães
            var atributos = methodInfo.GetCustomAttributes(typeof(FiltroAttribute), false);

            // Verificando se o metodo podera ser executado seguindo os filtros
            foreach (FiltroAttribute filtro in atributos)
            {
                if (!filtro.PodeContinuar())
                {
                    return(new FilterResult(false));
                }
            }

            return(new FilterResult(true));
        }
コード例 #3
0
        public ActionFilterResult ExecuteFilters(ControllerBase controller, ActionBindInfo actionBindInfo)
        {
            var controllerType = controller.GetType();

            var controllerActionFilters = controllerType.GetCustomAttributes(typeof(ActionFilterAttribute), false);
            var actionFilters           = actionBindInfo.MethodInfo.GetCustomAttributes(typeof(ActionFilterAttribute), false);

            var union = controllerActionFilters.Union(actionFilters).Cast <ActionFilterAttribute>();

            foreach (var item in union)
            {
                if (!item.CanContinue())
                {
                    return(ActionFilterResult.Redirect(item.RedirectTo));
                }
            }

            return(ActionFilterResult.Continue());
        }