ASP.NET MVC4过滤器功能使用指南

ASP.NET MVC4 的过滤器功能,说白了就是帮你把一些通用操作(比如权限验证、日志记录、异常)抽出来统一。这样控制器代码就能轻一点,逻辑也清晰不少。

授权过滤器,你可以自己写一个IAuthorizationFilter实现,做登录验证或者角色判断都挺方便的。比如:

public class CustomAuthAttribute : AuthorizeAttribute {
  protected override bool AuthorizeCore(HttpContextBase httpContext) {
    // 授权逻辑写这
    return base.AuthorizeCore(httpContext);
  }
}

有了这个自定义特性,想在哪个控制器加权限限制,就直接贴上去,干净利落。

再说动作过滤器,适合用来在执行 Action 前后插点小动作,比如记录个访问日志、检查下参数什么的。实现IActionFilter就行:

public class LogActionFilter : IActionFilter {
  public void OnActionExecuting(ActionExecutingContext filterContext) {
    // 打个日志
  }
}

响应出来之前想压缩点内容、加点 Header?就用结果过滤器。实现IResultFilter,你可以对返回值做:

public class CompressResultFilter : IResultFilter {
  public void OnResultExecuting(ResultExecutingContext filterContext) {
    // 压缩或加 Header
  }
}

异常过滤器也实用。比方说系统出错时,你可以统一打个日志、发个邮件提醒之类的:

public class ErrorFilter : IExceptionFilter {
  public void OnException(ExceptionContext filterContext) {
    // 错误逻辑
  }
}

,MVC4 里的过滤器机制,适合你在项目中做一些“横向关注点”的封装。如果你在做权限、日志、响应方面有重复代码,不妨动手写几个试试,维护起来也轻松。

如果你想进一步了解 MVC 的细节,可以看看这篇ASP.NET MVC4 开发指南,还有不少关于过滤器的实战例子。

docx 文件大小:22.27KB