MVC全局過濾器


Asp.NET MVC4中的全局過濾器,可以對整個項目進行全局監控。

新建一個MVC4項目,可以在global.asax文件中看到如下代碼:  FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
表示注冊全局過濾器.
GlobalFilters是全局過濾器的集合,可以通過add方法添加過濾器,默認情況下,HandleErrorAttribute過濾器被添加到集合中。
接下來我們創建一個自定義過濾器,然后添加到全局過濾器集合中。

1.創建自定義過濾器
  創建自定義過濾器要繼承ActionFilterAttribute類。我們創建一個名稱為CustomerFilterAttribute的過濾器,在action里面記錄下時間。
    代碼如下:
public class CustomerFilterAttribute : ActionFilterAttribute
        {

            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                base.OnActionExecuting(filterContext);
                filterContext.HttpContext.Response.Write("開始時間:" + DateTime.Now.ToString() + "<br/>");
            }

            public override void OnActionExecuted(ActionExecutedContext filterContext)
            {
                base.OnActionExecuted(filterContext);
                var controllerName = filterContext.RouteData.Values["controller"].ToString();
                var actionName = filterContext.RouteData.Values["action"].ToString();

                filterContext.HttpContext.Response.Write("結束時間:" + DateTime.Now.ToString() + "<br/>");
                filterContext.HttpContext.Response.Write("controller:" + controllerName + ",action:" + actionName);
            }
        }
2.注冊全局過濾器

過濾器創建完成后,我們把這個過濾器添加到全局過濾器中,使用  filters.Add(new CustomerFilterAttribute());方法,
代碼如下:
 public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            filters.Add(new CustomerFilterAttribute());
        }
    }
接下來我們運行項目中的每一個頁面,都會看到頁面中輸出時間和controller名稱,效果圖如下:


本文內容來源:http://blog.csdn.net/zx13525079024/article/details/19161777


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM