麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

asp.net MVC過濾器的用法(轉(zhuǎn))

2019-11-17 01:56:13
字體:
供稿:網(wǎng)友
asp.net MVC過濾器的用法(轉(zhuǎn))

轉(zhuǎn)自:http://www.studyofnet.com/news/257.html

APS.NET MVC中的每一個請求,都會分配給相應(yīng)的控制器和對應(yīng)的行為方法去處理,而在這些處理的前前后后如果想再加一些額外的邏輯處理。這時候就用到了過濾器。

在Asp.netMvc中當(dāng)你有以下及類似以下需求時你可以使用Filter功能

  1. 判斷登錄與否或用戶權(quán)限
  2. 決策輸出緩存
  3. 防盜鏈
  4. 防蜘蛛
  5. 本地化與國際化設(shè)置
  6. 實現(xiàn)動態(tài)Action

MVC支持的過濾器類型有四種,分別是:Authorization(授權(quán)),Action(行為),Result(結(jié)果)和Exception(異常)。

如下表

過濾器類型

接口

描述

Authorization

IAuthorizationFilter

此類型(或過濾器)用于限制進(jìn)入控制器或控制器的某個行為方法

Exception

IExceptionFilter

用于指定一個行為,這個被指定的行為處理某個行為方法或某個控制器里面拋出的異常

Action

IActionFilter

用于進(jìn)入行為之前或之后的處理

Result

IResultFilter

用于返回結(jié)果的之前或之后的處理

但是默認(rèn)實現(xiàn)它們的過濾器只有三種,分別是Authorize(授權(quán)),ActionFilter,HandleError(錯誤處理);各種信息如下表所示

過濾器

類名

實現(xiàn)接口

描述

ActionFilter

AuthorizeAttribute

IAuthorizationFilter

此類型(或過濾器)用于限制進(jìn)入控制器或控制器的某個行為方法

HandleError

HandleErrorAttribute

IExceptionFilter

用于指定一個行為,這個被指定的行為處理某個行為方法或某個控制器里面拋出的異常

自定義

ActionFilterAttribute

IActionFilter和IResultFilter

用于進(jìn)入行為之前或之后的處理或返回結(jié)果的之前或之后的處理

一、應(yīng)用于Action的Filter

創(chuàng)建 Action filter 必須實現(xiàn) IActionFilter 接口,該接口定義了兩個方法

方法名調(diào)用時機可進(jìn)行的操作
OnActionExecutingAction方法執(zhí)行之前可以給 filterContext.Result 賦值,以阻止 Action 的執(zhí)行可以通過 filterContext.ActionParameters 查看或修改 Action 的參數(shù)
OnActionExecutedAction方法執(zhí)行之后可以通過 filterContext.Exception 獲取 Action 執(zhí)行時拋出的異常,并能把它標(biāo)記為“已處理”:filterContext.ExceptionHandled = true。可以查看通過filterContext.Result查看 Action 的執(zhí)行結(jié)果,但是不能修改。

Action過濾器是通過繼承ActionFilterAttribute類來實現(xiàn)的一個Attribute類。ActionFilterAttribute 是一個抽象類,提供了兩個virtual的方法給我們重寫,OnActionExecutingOnActionExecuted

ASP.NET MVC 框架會在調(diào)用Action方法之前調(diào)用你Action過濾器中的OnActionExecuting方法,在之后調(diào)用Action過濾器中的OnActionExecuted方法。當(dāng)然在創(chuàng)建Action過濾器的時候你不需兩個方法都實現(xiàn)。

下面的示例是在調(diào)用Action方法之前和之后的日志跟蹤:

C# 代碼 復(fù)制
public class LoggingFilterAttribute : ActionFilterAttribute
 {     public override void OnActionExecuting(FilterExecutingContext         filterContext)     {         filterContext.HttpContext.Trace.Write("Starting: " +          filterContext.ActionMethod.Name);     }      public override void OnActionExecuted(FilterExecutedContext         filterContext)     {         if (filterContext.Exception != null)         {             filterContext.HttpContext.Trace.Write("Exception thrown");         }     } }

部分參數(shù)說明

Action Filter Context

OnActionExecuting方法有一個類型為FilterExecutingContext的參數(shù),而OnActionExecuted方法有一個相應(yīng)的類型為FilterExcutedContext的參數(shù)。兩個Context類都是繼承自FilterContext類,而FilterContext類繼承自ControllerContext類并包含一個ActionMethod屬性。你可以使用ActionMethod屬性來堅定這個Action過濾器是應(yīng)用到哪個Action方法上的。

FilterExecutingContext類包含一個 Cancel 的屬性,允許你取消當(dāng)前的Action。

FilterExcutedContext類包含一個Exception屬性和一個ExceptionHandled屬性。如果Exception屬性為null,則沒有異常在action stack中,表明Action方法運行并沒有發(fā)生錯誤。如果Exception屬性不為null,則過濾器知道該怎么處理,過濾器處理完異常后會發(fā)出已經(jīng)處理完的信號,然后將ExceptionHandled屬性設(shè)為true。就算ExceptionHandled屬性為true,堆棧中添加到其他Action方法的OnActionExcetued方法將會照常被調(diào)用,這種場景就如就算一個異常被處理了,日志記錄filter一樣照常執(zhí)行。

使用方法

你可以將過濾器應(yīng)用到任何一個你喜歡的Action方法上。下面的示例演示一個控制器中包含的用Action過濾器Attribute標(biāo)記的Action方法。

C# 代碼 復(fù)制
public class HomeController : Controller
 {     [LoggingFilter]     public void Index()     {         RenderView("Index");     }      [LoggingFilter]     public void About()     {         RenderView("About");     }      [LoggingFilter]     pub
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: fc2成人免费人成在线观看播放 | 欧美77| 免费黄色短视频网站 | 欧日韩在线 | 91精品国产综合久久久欧美 | 亚洲精品在线观看免费 | 一区二区三区四区高清视频 | 久久性生活免费视频 | 成人免费福利视频 | 欧美成年人视频在线观看 | 久久在线精品视频 | 双性精h调教灌尿打屁股的文案 | 亚洲特黄 | 欧美成人免费一区二区三区 | av在线高清观看 | h视频在线观看免费 | 91福利国产在线观一区二区 | 国产毛片网 | 毛片大全免费 | 夜添久久精品亚洲国产精品 | 久草视频福利在线观看 | 黄色高清免费 | 91 视频网站 | 欧美一级黄色录像片 | 久久伊人国产精品 | 91久久久久久亚洲精品禁果 | 91久久国产综合精品女同国语 | 久久精品a一级国产免视看成人 | 中文在线日韩 | 在线免费日本 | 美女视频黄视大全视频免费网址 | 国产精品久久久久久久久久久天堂 | 亚洲精品一区二区三区在线看 | 国产精品一区二区三区在线 | 欧美日韩亚洲视频 | 黄色大片网站在线观看 | 亚洲精品无码不卡在线播放he | 中文字幕欧美视频 | 99ri在线| 成人性视频免费网站下载软件 | 高清国产在线 |