摘要:ASP.NET MVC 瞭解Action Filter
前言
在開發.Net MVC過程中,偶爾會重覆使用到某些相同的function,為了方便維護,我們可以使用Action Filter這個功能,在網路上許多文章都有介紹到,以下是我自己的小小整理。
實作
假設我們如果要在很多頁面上輸出Hello World,如果照一般的做法可能就會在每頁使用ViewBag做輸出,撰寫重覆的程式碼。但如果使用Action Filter,只需要在ActionResult上方加上標籤即可。
(1) 首先建立HelloWorldTest 的Class
(2) 並繼承ActionFilterAttribute,需引用using System.Web.Mvc;
程式如下所示:
public class HelloWorldTest : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
filterContext.Controller.ViewBag.Message = "Hello World";
}
}
*需注意:其ovveride的方法有以下四種,而.net method通常結尾會以ing 及ed命名的,
其ing表示在之前執行,ed則表示在之後即行,如下:
OnActionExecuting 在執行 Action 之前執行
OnActionExecuted 在執行 Action 之後執行
OnResultExecuting 在執行 Action Result 之前執行
OnResultExecuted 在執行 Action Result 之後執行
(3) 建立完成Class後,我們就可以將其引用到不同的action。
只要在Action上方加上[Class名稱 ] 即可,如下所示:
[HelloWorldTest ]
public ActionResult Index()
{
return View();
}
參考文章
http://blog.xuite.net/f8789/DCLoveEP/29454536-ASP.NET+MVC+-+%E5%AF%A6%E4%BD%9C+ActionFilter+
http://www.dotblogs.com.tw/lastsecret/archive/2010/03/29/14274.aspx