Asp.Net Mvc Filter

Asp.Net Mvc Filter

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:卷猫
链接:http://anneke.cn/ArticleInfo/Detial/19
来源:Anneke.cn

public class OwnActionFilter : ActionFilterAttribute,IAuthorizationFilter,IExceptionFilter
    {
        /// <summary>
        /// 最先执行
        /// </summary>
        /// <param name="filterContext"></param>
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            filterContext.HttpContext.Response.Write("方法名称:OnAuthorization<br/>");
            //输出请求的控制器与action名称
            String controllerName = filterContext.RouteData.Values["controller"].ToString();
            String actionName = filterContext.RouteData.Values["action"].ToString();
            String message = String.Format("控制器:{0}<br/>action:{1}<br/>", controllerName, actionName);
            filterContext.HttpContext.Response.Write(message);
            filterContext.HttpContext.Response.Write("------------------华丽的分割线------------------<br/>");
        }
 
        /// <summary>
        /// 在action method之前执行
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.HttpContext.Response.Write("方法名称:OnActionExecuting<br/>");
            //输出请求的控制器与action名称
            String controllerName = filterContext.RouteData.Values["controller"].ToString();
            String actionName = filterContext.RouteData.Values["action"].ToString();
            String message = String.Format("控制器:{0}<br/>action:{1}<br/>", controllerName, actionName);
            filterContext.HttpContext.Response.Write(message);
            filterContext.HttpContext.Response.Write("------------------华丽的分割线------------------<br>");
        }
        /// <summary>
        /// 在action method之后执行
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            filterContext.HttpContext.Response.Write("方法名称:OnActionExecuted<br/>");
            //输出请求的控制器与action名称
            String controllerName = filterContext.RouteData.Values["controller"].ToString();
            String actionName = filterContext.RouteData.Values["action"].ToString();
            String message = String.Format("控制器:{0}<br/>action:{1}<br/>", controllerName, actionName);
            filterContext.HttpContext.Response.Write(message);
            filterContext.HttpContext.Response.Write("------------------华丽的分割线------------------<br/>");
        }
 
        /// <summary>
        /// 在返回view之前执行
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
            filterContext.HttpContext.Response.Write("方法名称:OnResultExecuting<br/>");
            //输出请求的控制器与action名称
            String controllerName = filterContext.RouteData.Values["controller"].ToString();
            String actionName = filterContext.RouteData.Values["action"].ToString();
            String message = String.Format("控制器:{0}<br/>action:{1}<br/>", controllerName, actionName);
            filterContext.HttpContext.Response.Write(message);
            filterContext.HttpContext.Response.Write("------------------华丽的分割线------------------<br/>");
        }
 
        /// <summary>
        /// 在返回View之后执行
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
            filterContext.HttpContext.Response.Write("方法名称:OnResultExecuted<br/>");
            //输出请求的控制器与action名称
            String controllerName = filterContext.RouteData.Values["controller"].ToString();
            String actionName = filterContext.RouteData.Values["action"].ToString();
            String message = String.Format("控制器:{0}<br/>action:{1}<br/>", controllerName, actionName);
            filterContext.HttpContext.Response.Write(message);
            filterContext.HttpContext.Response.Write("------------------华丽的分割线------------------<br/>");
        }
 
      
        /// <summary>
        /// 当出现异常时才执行
        /// </summary>
        /// <param name="filterContext"></param>
        public void OnException(ExceptionContext filterContext)
        {
            filterContext.HttpContext.Response.Write("方法名称:OnException<br/>");
            //输出请求的控制器与action名称
            String controllerName = filterContext.RouteData.Values["controller"].ToString();
            String actionName = filterContext.RouteData.Values["action"].ToString();
            String message = String.Format("控制器:{0}<br/>action:{1}", controllerName, actionName);
            filterContext.HttpContext.Response.Write(message);
            filterContext.HttpContext.Response.Write("------------------华丽的分割线------------------<br/>");
        }
    }

执行效果:

Asp.Net Mvc Filter