欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

ASP.NETMVC過(guò)濾器(四)-創(chuàng)新互聯(lián)

 ASP.NET MVC 過(guò)濾器(四)

前言

前一篇對(duì)IActionFilter方法執(zhí)行過(guò)濾器在框架中的執(zhí)行過(guò)程做了大概的描述,本篇將會(huì)對(duì)IActionFilter類型的過(guò)濾器使用來(lái)做一些介紹。

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比邵原網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式邵原網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋邵原地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。

ASP.NET MVC過(guò)濾器

  • 過(guò)濾器在系統(tǒng)框架中的整體對(duì)象模型

  • IAuthorizationFilter授權(quán)認(rèn)證過(guò)濾器的執(zhí)行過(guò)程

  • 使用IAuthorizationFilter過(guò)濾器

  • IActionFilter行為過(guò)濾器的執(zhí)行過(guò)程

  • 自定義實(shí)現(xiàn)IActionFilter行為過(guò)濾器

  • 異常過(guò)濾器的使用

自定義實(shí)現(xiàn)IActionFilter行為過(guò)濾器

還是接著前面控制器篇幅的示例來(lái)演示,沒(méi)看過(guò)的朋友也沒(méi)關(guān)系,只要有個(gè)一個(gè)基礎(chǔ)的顯示頁(yè)面就可以了。

圖1

ASP.NET MVC 過(guò)濾器(四)

這是初始頁(yè)面調(diào)用了IoCDemoController控制器默認(rèn)的Index方法。

下面我們來(lái)實(shí)現(xiàn)我們自定義的IActionFilter類型。

代碼1-1

 1     public class MyCustomActionFilterAttribute : FilterAttribute, IActionFilter
 2     {
 3 
 4         public void OnActionExecuted(ActionExecutedContext filterContext)
 5         {
 6             filterContext.HttpContext.Response.Write("這是在控制器方法:" + filterContext.ActionDescriptor.ActionName + "-執(zhí)行之后");
 7             
 8         }
 9 
10         public void OnActionExecuting(ActionExecutingContext filterContext)
11         {
12             filterContext.HttpContext.Response.Write("這是在控制器方法:" + filterContext.ActionDescriptor.ActionName + "-執(zhí)行之前");
13         }
14 }

在上篇中我們對(duì)上述代碼的中設(shè)計(jì)到類型結(jié)構(gòu)已經(jīng)作了描述了,在此不再重復(fù),我們定義好了行為過(guò)濾器那就把它用起來(lái)。

ASP.NET MVC 過(guò)濾器(四)

在應(yīng)用了此過(guò)濾器過(guò)后我們?cè)賮?lái)看一下運(yùn)行的結(jié)果:

圖2

ASP.NET MVC 過(guò)濾器(四)

我們可以試著把過(guò)濾器放在所要執(zhí)行的控制器行為上,而不是控制器:

代碼1-2

 1     public class IoCDemoController : Controller
 2     {
 3         private IDataStandard _DataStandard;
 4 
 5         public IoCDemoController(IDataStandard dataStandard)
 6         {
 7             _DataStandard = dataStandard;
 8         }
 9 
10         [MyCustomActionFilter]
11         public ActionResult Index()
12         {
13             return View(_DataStandard.GetProducts());
14             
15         }
16     }

再次運(yùn)行發(fā)現(xiàn)結(jié)果會(huì)和放在控制器上的結(jié)果一樣。唯一不同的是過(guò)濾器的應(yīng)用范圍不同,放在方法上的時(shí)候只有在請(qǐng)求這個(gè)控制器行為的時(shí)候才會(huì)調(diào)用這些過(guò)濾器,而放在控制器上的過(guò)濾器,無(wú)論你請(qǐng)求控制器中的哪個(gè)行為都會(huì)調(diào)用。

過(guò)濾器的執(zhí)行順序

通過(guò)前幾篇的學(xué)習(xí),我們從框架的硬編碼中可以看出,控制器不同類型的執(zhí)行順序,依次是授權(quán)認(rèn)證過(guò)濾器、行為過(guò)濾器、結(jié)果過(guò)濾器。而還有一種異常過(guò)濾器,是不受限制的,只要有異常就會(huì)觸發(fā)調(diào)用。這里說(shuō)的是不同類型的過(guò)濾器之前的框架調(diào)用順序,那么同一種類型過(guò)濾器之間的調(diào)用順序我們?cè)趺纯刂颇兀縼?lái)看示例:

代碼1-3

 1     public class MyCustomActionFileterOneAttribute : FilterAttribute, IActionFilter
 2     {
 3 
 4         public void OnActionExecuted(ActionExecutedContext filterContext)
 5         {
 6             filterContext.HttpContext.Response.Write("這是" + this.GetType().Name + "過(guò)濾器在控制器方法:" + filterContext.ActionDescriptor.ActionName + "-執(zhí)行之后輸出");
 7         }
 8 
 9         public void OnActionExecuting(ActionExecutingContext filterContext)
10         { 
11             filterContext.HttpContext.Response.Write("這是"+this.GetType().Name+"過(guò)濾器在控制器方法:" + filterContext.ActionDescriptor.ActionName + "-執(zhí)行之前輸出");
12         }
13     }

并且上述1-1代碼中的輸出示例修改為1-3這樣的輸入示例,然后我們?cè)侔研露x的行為過(guò)濾器加到行為方法上:

1         [MyCustomActionFilter]
2         [MyCustomActionFileterOne]
3         public ActionResult Index()
4         {
5             return View(_DataStandard.GetProducts());
6         }

我們看一下結(jié)果如圖:

圖3

ASP.NET MVC 過(guò)濾器(四)

看到這個(gè)結(jié)果,有的朋友可能會(huì)說(shuō)了,是按照添加后位置的順序來(lái)執(zhí)行的,可以這么說(shuō)吧,我們?cè)賮?lái)修改一下添加在Index()方法之上的兩個(gè)過(guò)濾器中的屬性變量Order,這個(gè)屬性來(lái)至IMvcFilter接口類型,所有的過(guò)濾器類型都是要實(shí)現(xiàn)它的,只不過(guò)在我們自定義中的FilterAttribute類型已經(jīng)幫我們實(shí)現(xiàn)了。

看下修改后的示例代碼:

代碼1-4

1         [MyCustomActionFilter(Order=2)]
2         [MyCustomActionFileterOne(Order=1)]
3         public ActionResult Index()
4         {
5             return View(_DataStandard.GetProducts());
6         }

運(yùn)行結(jié)果如圖:

ASP.NET MVC 過(guò)濾器(四)

對(duì)于過(guò)濾器的使用還有許多種方式,本篇的IActionFilter類型過(guò)濾器就講解到這里。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。

新聞標(biāo)題:ASP.NETMVC過(guò)濾器(四)-創(chuàng)新互聯(lián)
分享路徑:http://chinadenli.net/article44/cosehe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)網(wǎng)站設(shè)計(jì)公司App開(kāi)發(fā)做網(wǎng)站電子商務(wù)品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)