十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
原文链接:Understanding Action Filters
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站制作、外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的六盘水网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
一、定义
Action筛选器是一个属性,你可以应用于控制器的Action方法 — — 或整个控制器 — — 修改在其中执行此Action的方式。
1.OutputCache – 此Action筛选器缓存 控制器的Action输出 为指定的时间量。
2.HandleError – 此Action筛选器处理引发的控制器Action执行时的错误。
3.Authorize – 此操作筛选器使您可以限制对特定用户或角色的访问。
您还可以创建您自己的自定义操作筛选器。例如,您可能想要创建一个自定义操作筛选器,以执行自定义身份验证系统。或者,您可能想要创建操作筛选器来修改视图数据返回一个控制器动作。
二、默认分类
ASP.NET MVC 框架支持四种不同类型的筛选器︰
Authorization filters – Implements the IAuthorizationFilter
attribute.
Action filters – Implements the IActionFilter
attribute.
Result filters – Implements the IResultFilter
attribute.
Exception filters – Implements the IExceptionFilter
attribute.
执行顺序:授权筛选器优先级最高;异常筛选器优先级最低。
Authorization筛选器用来实现身份验证和授权控制器操作。例如,Authorize筛选器是Authorization筛选器示例。
Action筛选器包含的逻辑,执行之前和之后的控制器操作执行。您可以使用操作筛选器,例如,修改控制器操作返回的视图数据。
Result筛选器包含的逻辑,执行之前和之后执行视图结果。例如,您可能想要修改视图结果在视图呈现到浏览器之前。
Exception筛选器是最后一种类型的筛选器来运行。异常筛选器可用于处理由您的控制器操作或控制器操作结果引发的错误。您还可以使用异常筛选器记录错误。
每种不同类型的筛选器是按特定的顺序执行的。如果你想要控制在其中执行相同类型的筛选器的顺序,然后你可以设置筛选器的 Order 属性。
所有操作筛选器的基类是 System.Web.Mvc.FilterAttribute 类。如果你想要执行特定类型的筛选器,然后你需要创建一个类,从筛选器基类继承并实现一个或更多的 IAuthorizationFilter、 IActionFilter、 IResultFilter,或 ExceptionFilter 接口。
三、ActionFilterAttribute基类
为了更容易为你执行自定义操作筛选器,ASP.NET MVC 框架提供 ActionFilterAttribute 基类。此类实现的 IActionFilter 和IResultFilter 接口,并从筛选器类继承。
从技术上讲,从 ActionFilterAttribute 类继承的类是操作筛选器和结果筛选器。然而,整体来说,操作筛选器用于指任何类型的 ASP.NET MVC 框架中的筛选器。
ActionFilterAttribute基类有四个方法可以被重写:
OnActionExecuting – This method is called before a controller action is executed.
OnActionExecuted – This method is called after a controller action is executed.
OnResultExecuting – This method is called before a controller action result is executed.
OnResultExecuted – This method is called after a controller action result is executed.