本篇內(nèi)容主要講解“ASP.NET MVC的篩選器有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“ASP.NET MVC的篩選器有哪些”吧!
一、Filter
雖然ASP.NETMVC提供的四種類型的篩選器具有各自實現(xiàn)的接口,但是對于篩選器的提供體系來說所有的篩選器都通過具有如下定義的Filter類型表示。Filter的核心是Instance屬性,因為它代表真正實施篩選功能的對象,該對象實現(xiàn)了一個或者多個基于上述四種篩選器類型的接口。
1:publicclassFilter
2:{
3:publicconstintDefaultOrder=-1;
4:publicFilter(objectinstance,FilterScopescope,int?order);
5:
6:publicobjectInstance{get;protectedset;}
7:publicintOrder{get;protectedset;}
8:publicFilterScopeScope{get;protectedset;}
9:}
10:
11:publicenumFilterScope
12:{
13:Action=30,
14:Controller=20,
15:First=0,
16:Global=10,
17:Last=100
18:}
二、FilterProvider
Filter的提供機制與之前我們介紹的基于ModelBinder和ModelValidator的提供機制比較類似,均是通過相應(yīng)的Provider來提供的。提供篩選器的FilterProvider實現(xiàn)了接口IFilterProvider,如下面的代碼片斷所示,該接口定義了的方法GetFilters根據(jù)指定的Controller上下文和用于描述目標(biāo)Action的ActionDescriptor對象獲取一個Filter對象集合。
1:publicinterfaceIFilterProvider
2:{
3:IEnumerable
ActionDescriptoractionDescriptor);
4:}
ASP.NETMVC有幾種類型的篩選器
三、FilterAttribute與FilterAttributeFilterProvider
我們通常將篩選器定義成特性以聲明的方式應(yīng)用到Controller類型或者Action方法上,而抽象類型FilterAttribute是所有篩選器的基類。如下面的代碼片斷所示,F(xiàn)ilterAttribute特性實現(xiàn)了IMvcFilter接口,該接口定義了Order和AllowMultiple兩個只讀屬性,分別用于控制篩選器的執(zhí)行順序以及多個同類的篩選器能夠同時應(yīng)用到同一個目標(biāo)元素(類或者方法)。
1:[AttributeUsage(AttributeTargets.Method|AttributeTargets.Class,Inherited=true,AllowMultiple=false)]2:publicabstractclassFilterAttribute:Attribute,IMvcFilter3:{4:protectedFilterAttribute();5:6:publicboolAllowMultiple{get;}7:publicintOrder{get;set;}8:}9:10:publicinterfaceIMvcFilter11:{12:boolAllowMultiple{get;}13:intOrder{get;}14:}
四、Controller與ControllerInstanceFilterProvider
提到ASP.NETMVC的篩選器,大部分的都只會想到通過FilterAttribute特性,實際上Controller本身(繼承自抽象類Controller)就是一個篩選器。如下面的代碼片斷所示,抽象類Controller實現(xiàn)了IActionFilter、IAuthorizationFilter、IExceptionFilter和IResultFilter這四個對應(yīng)著不同篩選器類型的接口。
1:publicabstractclassController:ControllerBase,
2:IActionFilter,
3:IAuthorizationFilter,
4:IExceptionFilter,
5:IResultFilter,
6:...
7:{
8://省略成員
9:}
針對Controller對象這種獨特篩選器的FilterProvider類型為具有如下定義的ControllerInstanceFilterProvider。在實現(xiàn)的GetFilters方法中,它會根據(jù)指定的Controller上下文獲取對應(yīng)的Controller對象,并以此創(chuàng)建一個Filter(Controller對象作為Filter對象的Instance屬性值)。該Filter的Scope不是Controller,而是First,而Order的值為-2147483648(Int32.MinValue),毫無疑問這樣的Filter肯定第一個被執(zhí)行。
到此,相信大家對“ASP.NET MVC的篩選器有哪些”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
新聞名稱:ASP.NETMVC的篩選器有哪些-創(chuàng)新互聯(lián)
新聞來源:http://aaarwkj.com/article48/ccghep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、微信小程序、商城網(wǎng)站、響應(yīng)式網(wǎng)站、品牌網(wǎng)站設(shè)計、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)