在示例项目中找到了一个自定义的ActionFilterAttribute,但我无法确定它的调用位置

时间:2013-12-24 01:56:47

标签: c# asp.net-mvc-5

我下载了一个示例MVC应用程序,其中有一个名为“AuthorizationHelper”的类继承自ActionFilterAttribute,但是在搜索项目时我找不到这个帮助器的调用位置或方式,所以我是对此感到困惑。我理解帮助器正在做什么我只是无法弄清楚它是如何被调用的。如果它有帮助,这是代码:

public class AuthorizationHelper : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        string AppLocation = WebConfigurationManager.AppSettings["AppLocation"];

        if (AppLocation == "Development")
        {
            filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary
                {
                    {"controller", "Home"},
                    {"action", "Index"},
                    {"area", ""}
                }
            );
        }
        base.OnActionExecuted(filterContext);
    }
}

1 个答案:

答案 0 :(得分:1)

这是一个动作过滤器,既可以在App_Start\FilterConfig.cs中注册,也可以用于装饰控制器或动作。如果您查看App_Start\FilterConfig.cs,可能会发现以下内容:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new AuthorizationHelper());
    }
}

在您的特定情况下,OnActionExecuted表示在执行了操作后执行过滤器,但 之前已执行操作结果。

有关详细信息,我建议您阅读Understanding Action Filters (C#)。虽然此链接适用于较旧版本的MVC,但唯一的区别在于过滤器的注册方式。早于MVC 4的MVC版本将直接在Global.asax内注册过滤器,而不是App_Start\FilterConfig.cs