zoukankan      html  css  js  c++  java
  • MVC的过滤器

    过滤器分类:

    Action过滤器    View结果渲染过滤器     全局错误异常过滤器    身份验证过滤器

    1.Action过滤器:在Action执行之前和执行之后分别干一些事   接口:(IActionFilter)

    2.View结果渲染过滤器:   接口:(IActionFilter)

     [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)]
        public class MyActionFilterAttribute :ActionFilterAttribute
        {
            public string Name { get; set; }
    
            //在Action执行之前先执行此方法   重写方法  执行之前先执行
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                base.OnActionExecuting(filterContext);
                filterContext.HttpContext.Response.Write("<br />OnActionExecuting---"+ Name);
            }
            //
            public override void OnActionExecuted(ActionExecutedContext filterContext)
            {
                base.OnActionExecuted(filterContext);
                filterContext.HttpContext.Response.Write("<br />OnActionExecuted---" + Name);
            }
    
            public override void OnResultExecuting(ResultExecutingContext filterContext)
            {
                base.OnResultExecuting(filterContext);
                filterContext.HttpContext.Response.Write("<br />OnResultExecuting---" + Name);
            }
    
            public override void OnResultExecuted(ResultExecutedContext filterContext)
            {
                base.OnResultExecuted(filterContext);
                filterContext.HttpContext.Response.Write("<br />OnResultExecuted---" + Name);
            }
        }
    

      怎么去调用呢?

     [MyActionFilter(Name = "Home/Index")]
            public ActionResult Index()
            {
    
                Response.Write("<br />Action执行了.... <br/>");
            }
    

       注意:类上面的标签可以作用到所有控制器上的方法

    所有的控制器都需要的话(全局过滤器):

     public class FilterConfig
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new HandleErrorAttribute());
    
                filters.Add(new MyActionFilterAttribute(){Name = "全局的"});
            }
        }
    

      调用:

    控制器和类中的内容都显示:

     [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)]
        public class MyActionFilterAttribute :ActionFilterAttribute
        {
    }

      

  • 相关阅读:
    领导者是梦想家,却不能只是梦想家
    8i查询DBA_FREE_SPACE视图极慢的问题
    11g 新特性IGNORE_ROW_ON_DUPKEY_INDEX提示
    ORA00600:[qctcte1]内部错误一例
    利用FORCE_MATCHING_SIGNATURE捕获非绑定变量SQL
    Does DB Time include wait on cpu queue time?
    对于OCM考试的几点意见和建议
    rman hang on SQL*Net message from client
    ddl操作是否会产生undo?
    ORA07445: [__lwp_kill()+8] [SIGIOT]错误一例
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/6195403.html
Copyright © 2011-2022 走看看