[ASP.NET MVC] 客製 ActionFilterAttribute

ASP.NET MVC 提供 ActionFilterAttribute 抽象类别,让开发人员在 Action 之前或之后执行自订涵式,例如写入LOG。

ActionFilterAttribute 的命名是在自订名称尾端加上「Attribute」
例如:WebAuthorizeAttribute
public class NameController : Controller{    [WebAuthorize]    public ActionResult Index()    {        return View();    }}
自订类别继承 ActionFilterAttribute
ActionFilterAttribute 有四种方法
执行Action之前执行:OnActionExecuting
执行Action之后执行:OnActionExecuted
执行Action Result之前执行:OnResultExecuting
执行Action Result之后执行:OnResultExecuted
sealed class WebAuthorizeAttribute : ActionFilterAttribute{    public override void OnActionExecuting(ActionExecutingContext filterContext)    {        //欲执行的工作    }}
延伸讨论
AttributeUsage用来规範ActionFilterAttribute的使用方式,
共有三个属性,藉由定义下列参数来设定。
ValidOn
可以指定只能放在什么属性前面,例如类别(Class)或是全部(All)。
AllowMultiple
是否允许在同一个涵式上重複附加多个。
Inherited
是否可由衍生类别继承,以及覆写成员。
备注:如下继承若为 True,实际行为会取决于AllowMultiple属性的值
继承:True,AllowMultiple:False,结果:衍生类别覆盖类别
继承:True,AllowMultiple:True ,结果:衍生类别与类别共存
[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)]sealed class WebAuthorizeAttribute : ActionFilterAttribute{    public override void OnActionExecuting(ActionExecutingContext filterContext)    {        //欲执行的工作    }}

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章