什么是执行FilterAttribute,IActionFilter和在asp.net MVC 3从

2019-08-16 23:49发布

我看到,在一个情况下,我们可以覆盖OnActionExecutingOnActionExecuted方法继承ActionFilterAttribute这样的类:

public class MyFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    { // bla bla }
}

而在其他情况下,我们还可以实现IActionFilterFilterAttribute是这样的:

public class MySecondFilterAttribute : FilterAttribute, IActionFilter 
{ 
    public void OnActionExecuted(ActionExecutingContext filterContext) {}
}

那么,有没有这两种方法之间的差异,也许任何特定的情况下这将是最好使用在其它其中之一?

提前致谢。

Answer 1:

基本上FilterAttribute提供了MVC属性的最低电平行为,并实现了提供订单和性能的AllowMultiple的IMvcFilter。

ActionFilterAttribute是用于过滤的行动和成果的基础上,因为是IActionFilter,IResultFilter的执行情况和FilterAttribute继承。

你MySecondFilterAttribute实施导致ActionFilterAttribute没有IResultFilter能力(OnResultExecuting和OnResultExecuted)。



文章来源: What's the difference between implementing FilterAttribute, IActionFilter and inheriting from ActionFilterAttribute in asp.net mvc 3?