使用这个类的唯一好处是不需要重写和实现不打算使用的方法。除此之外,直接实现过滤器接口没有任何好处
自定义实例:
public class ProfileAllAttribute: ActionFilterAttribute{
private Stopwatch timer;
public override void OnActionExecuting(ActionExecutingContext filterContext){
timer = Stopwatch.StartNew();
}
public override void OnActionExecuted(ActionExecutedContext filterContext){
timer.Stop();
filterContext.HttpContext.Response.Write(
string.Format("<div>Total elapsed time:{0}</div>", timer.Elapsed.TotalSeconds));
}
}
public class HomeController : Controller{
[ProfileAll]
public ActionResult Index(){ return View();}
}
其它过滤器属性:
public abstract class Controller : ControllerBase, IActionFilter, IAuthenticationFilter, IAuthorizationFilter, IDisposable, IExceptionFilter, IResultFilter, IAsyncController, IController, IAsyncManagerContainer
过滤器的几种实现形式:
①全局过滤器
在FilterConfig中直接注册实现类
②实现接口
③注解
对过滤器执行排序
过滤器是按类型执行的其顺序:授权-》Action-》result。如果有未处理异常,框架在任一阶段都会执行异常过滤器
namespace System.Web.Mvc
{
// 摘要:表示操作和结果筛选器特性的基类。
public abstract class FilterAttribute : Attribute, IMvcFilter{
// 摘要: 获取或设置一个值,该值指示是否可指定筛选器特性的多个实例。
// 返回结果:如果可指定筛选器特性的多个实例,则为 true;否则为 false。
public bool AllowMultiple { get; }
// 摘要: 获取或者设置执行操作筛选器的顺序。
// 返回结果:执行操作筛选器的顺序。
public int Order { get; set; }
}
}
内建过滤器
|
过滤器 |
描述 |
|
RequireHttps |
强迫Action使用Https协议 |
|
OutputCache |
缓存一个Action的 |
|
ValidateInputand ValidationAntiForgeryToken |
与安全性有关的授权过滤器 |
|
AsyncTimeout NoAsyncTimeout |
用户异步控制器 |
|
ChildActionOnlyAttribute |
一个支持Html.action和Html.RenderAction辅助器方法的过滤器 |








