您好,登錄后才能下訂單哦!
原文鏈接:Understanding Action Filters
一、定義
Action篩選器是一個(gè)屬性,你可以應(yīng)用于控制器的Action方法 — — 或整個(gè)控制器 — — 修改在其中執(zhí)行此Action的方式。
1.OutputCache – 此Action篩選器緩存 控制器的Action輸出 為指定的時(shí)間量。
2.HandleError – 此Action篩選器處理引發(fā)的控制器Action執(zhí)行時(shí)的錯(cuò)誤。
3.Authorize – 此操作篩選器使您可以限制對(duì)特定用戶或角色的訪問(wèn)。
您還可以創(chuàng)建您自己的自定義操作篩選器。例如,您可能想要創(chuàng)建一個(gè)自定義操作篩選器,以執(zhí)行自定義身份驗(yàn)證系統(tǒng)。或者,您可能想要創(chuàng)建操作篩選器來(lái)修改視圖數(shù)據(jù)返回一個(gè)控制器動(dòng)作。
二、默認(rèn)分類
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.
執(zhí)行順序:授權(quán)篩選器優(yōu)先級(jí)最高;異常篩選器優(yōu)先級(jí)最低。
Authorization篩選器用來(lái)實(shí)現(xiàn)身份驗(yàn)證和授權(quán)控制器操作。例如,Authorize篩選器是Authorization篩選器示例。
Action篩選器包含的邏輯,執(zhí)行之前和之后的控制器操作執(zhí)行。您可以使用操作篩選器,例如,修改控制器操作返回的視圖數(shù)據(jù)。
Result篩選器包含的邏輯,執(zhí)行之前和之后執(zhí)行視圖結(jié)果。例如,您可能想要修改視圖結(jié)果在視圖呈現(xiàn)到瀏覽器之前。
Exception篩選器是最后一種類型的篩選器來(lái)運(yùn)行。異常篩選器可用于處理由您的控制器操作或控制器操作結(jié)果引發(fā)的錯(cuò)誤。您還可以使用異常篩選器記錄錯(cuò)誤。
每種不同類型的篩選器是按特定的順序執(zhí)行的。如果你想要控制在其中執(zhí)行相同類型的篩選器的順序,然后你可以設(shè)置篩選器的 Order 屬性。
所有操作篩選器的基類是 System.Web.Mvc.FilterAttribute 類。如果你想要執(zhí)行特定類型的篩選器,然后你需要創(chuàng)建一個(gè)類,從篩選器基類繼承并實(shí)現(xiàn)一個(gè)或更多的 IAuthorizationFilter、 IActionFilter、 IResultFilter,或 ExceptionFilter 接口。
三、ActionFilterAttribute基類
為了更容易為你執(zhí)行自定義操作篩選器,ASP.NET MVC 框架提供 ActionFilterAttribute 基類。此類實(shí)現(xiàn)的 IActionFilter 和IResultFilter 接口,并從篩選器類繼承。
從技術(shù)上講,從 ActionFilterAttribute 類繼承的類是操作篩選器和結(jié)果篩選器。然而,整體來(lái)說(shuō),操作篩選器用于指任何類型的 ASP.NET MVC 框架中的篩選器。
ActionFilterAttribute基類有四個(gè)方法可以被重寫:
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.
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。