在Asp.netMvc中當你有以下及類似以下需求時你可以使用Filter功能
判斷登錄與否或用 戶權限
決策輸出緩存
防盜鏈
防蜘蛛
本地化與國際化設置
實現動態Action
Filter是一種聲明式編程方式,在Asp.net MVC中它只能限制於Action(或 它的Controller)。
Filter要繼承於ActionFilterAttribute抽象類,並可以覆寫void OnActionExecuting(ActionExecutingContext)和
void OnActionExecuted (ActionExecutedContext)
以及void OnResultExecuting(ResultExecutingContext)和
void OnResultExecuted(ResultExecutedContext)
OnActionExecuting是Action執 行前的操作,OnActionExecuted則是Action執行後的操作
而OnResultExecuting是解析 ActionResult前執行,OnResultExecuted是解析ActionResult後執行。
一、應用於Action 的Filter
下面我給大家一個示例,來看看它的的執行順序
首先我們先建立 一個 Filter,名字叫做TestFilter
public class TestFilter : ActionFilterAttribute
{
public override void OnActionExecuting (ActionExecutingContext filterContext)
{
filterContext.HttpContext.Session ["temp"] += "TestFilter OnActionExecuting<br/>";
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnActionExecuted<br/>";
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnResultExecuting<br/>";
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnResultExecuted<br/>";
}
}
然後建立一個Action:
[TestFilter]//將此Filter應用於Action
public ActionResult filteraction()
{
return View();
}