我下载了一个示例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);
}
}
答案 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
。