zoukankan      html  css  js  c++  java
  • asp.net mvc之过滤器

    先看一段实例

    public class Log : FilterAttribute, IActionFilter
        {
            public void OnActionExecuted(ActionExecutedContext filterContext)
            {
                Console.WriteLine("log-after");
            }
    
            public void OnActionExecuting(ActionExecutingContext filterContext)
            {
                Console.WriteLine("log-before");
            }
        }
    public class HomeController : Contoller
        {
            [Log]
            public ActionResult Index()
            {
                return View();
            }
        }

    MVC有四种过滤器

    ActionFilter(方法过滤器):实现接口:[IActionFilter];在Action调用前和调用后执行

    ResultFilter(结果过滤器):实现接口:[IResultFilter];在Action Result调用完,跳转至view页面前/后执行

    AuthorizationFilter(授权过滤器):实现接口:[IauthorizationFilter];所有过滤器中最先执行的

    ExceptionFilter(异常处理过滤器):实现接口:[IExceptionFilter]:在控制器方法抛出异常时执行

    应用场景

    public class FilterConfig
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new HandleErrorAttribute());
                filters.Add(new MyAuthorAttribute());
                filters.Add(new ExceptionFilter());//异常过滤器
            }
        }
    public class MyAuthorAttribute : FilterAttribute, IAuthorizationFilter
        {
            public void OnAuthorization(AuthorizationContext filterContext)
            {  
    ///
            }
        }
    View Code

    Global实现全局

    //实现全局
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
  • 相关阅读:
    飞跃平野(sdut1124)
    背包
    sdut2193救基友记3(三维)
    hdu1542 Atlantis(矩阵面积的并)
    hdu1505City Game(扫描线)
    poj3468A Simple Problem with Integers(线段树的区域更新)
    hdu1166敌兵布阵&&hdu1754I Hate It(线段树入门)
    Biorhythms(中国剩余定理)
    Sequence(priority_queue)
    Message Flood(map)
  • 原文地址:https://www.cnblogs.com/shiyige-216/p/8656631.html
Copyright © 2011-2022 走看看