码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET MVC过滤器

时间:2016-04-10 06:44:50      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

在ASP.NET MVC中有个重要特性就是过滤器,使得我们在MVC程序开发中更好的控制浏览器请求的URL,不是每个请求都有响应内容,只有特定得用户才有。园子里关于过滤器的资料也有很多,这篇文章主要是记录自己的学习。

过滤器类型

类型 接口 默认实现 执行时间 描述
 Action  IActionFilter ActionFilterAttribute  用于进入行为之前或之后的处理  方法过滤器
 Result  IResultFilter ActionFilterAttribute 用于返回结果的之前或之后的处理  结果过滤器
 Exception  IExceptionFilter

AuthorizeAttribute

用于指定一个行为,这个被指定的行为处理某个行为方法或某个控制器里面抛出的异常  异常过滤器
 Authentication  IAuthorizationFilter

HandleErrorAttribute

此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法  授权过滤器

 

1. Action

  •     在ASP.NET MVC项目中新建文件夹Filter,然后再在文件夹下新建类MyActionFilter,在类中添加命名空间using System.Web.Mvc,再继承自ActionFilterAttribute抽象类,我们按F12我们可以看到抽象类有四个方法,从方法的命名我们不难发现他们的执行顺序。
    public abstract class ActionFilterAttribute : FilterAttribute, IActionFilter, IResultFilter
    {
        protected ActionFilterAttribute();
        public virtual void OnActionExecuted(ActionExecutedContext filterContext);
        public virtual void OnActionExecuting(ActionExecutingContext filterContext);
        public virtual void OnResultExecuted(ResultExecutedContext filterContext);
        public virtual void OnResultExecuting(ResultExecutingContext filterContext);
    }

   MyActionFilter.cs

    public class MyActionFilter : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            filterContext.HttpContext.Response.Write("在Action执行前执行");
            base.OnActionExecuted(filterContext);
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.HttpContext.Response.Write("在Action执行后执行");
            base.OnActionExecuting(filterContext);
        }
    }
  • 过滤器可以加在三个地方,第一是控制器上面(可限制控制器下面所有的Action),第二是Action上面(限制指定的Action),第三是全局的过滤器(限制所有的Action)。

  1. 控制器上面  

         技术分享

    2.  Action上面

     技术分享

   3.   全局过滤器

   在ASP.NET MVC项目中的App_Start下新建类FilterConfig,添加静态方法RegisterGlobalFilters。

   在Global中注册RegisterGlobalFilters方法

  技术分享

技术分享

  •  运行结果

    技术分享

2. Result

3. Exception

4. Authentication

ASP.NET MVC过滤器

标签:

原文地址:http://www.cnblogs.com/liujie2272/p/5363082.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!