一、概念定义

Filter是一种声明式编程方式,在Asp.net MVC中它只能限制于Action(或它的Controller)。

Filter用途广泛:(1)判断登录与否或用户权限;(2)决策输出缓存;(3)防盗链;(4)防蜘蛛;(5)本地化与国际化设置(6)实现动态Action。

Filter要继承于ActionFilterAttribute抽象类,并覆写四个方法:

(1)OnActionExecuting是Action执行前的操作;(2)OnActionExecuted则是Action执行后的操作;

(3)OnResultExecuting是解析ActionResult前执行;(4)OnResultExecuted是解析ActionResult后执行。

二、创建filter类:类需要继承一个接口,并且重写4个方法

public class paramFilter : System.Web.Mvc.ActionFilterAttribute
    {
        //Action执行前的操作
        public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
        {
            if (filterContext.HttpContext.Request.QueryString["k"] == "go")
            {
                string retUrl = filterContext.RouteData.GetRequiredString("controller") + "/" + filterContext.RouteData.GetRequiredString("action");
                filterContext.HttpContext.Response.Redirect("http://" + filterContext.HttpContext.Request.Url.Host + ":" + filterContext.HttpContext.Request.Url.Port.ToString() + "/" + retUrl);
            }
        }

        //Action执行后的操作
        public override void OnActionExecuted(System.Web.Mvc.ActionExecutedContext filterContext)
        {
            base.OnActionExecuted(filterContext);
        }

        //解析ActionResult前执行
        public override void OnResultExecuting(System.Web.Mvc.ResultExecutingContext filterContext)
        {
            base.OnResultExecuting(filterContext);
        }

        //解析ActionResult后执行
        public override void OnResultExecuted(System.Web.Mvc.ResultExecutedContext filterContext)
        {
            base.OnResultExecuted(filterContext);
        }
    }
View Code

相关文章:

  • 2021-12-23
  • 2021-10-15
  • 2022-02-09
  • 2021-12-23
  • 2021-06-03
  • 2021-08-24
  • 2021-04-09
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-22
  • 2022-12-23
  • 2022-03-01
  • 2022-12-23
相关资源
相似解决方案