繁体   English   中英

实现FilterAttribute,IActionFilter和从asp.net mvc 3中的ActionFilterAttribute继承有什么区别?

[英]What's the difference between implementing FilterAttribute, IActionFilter and inheriting from ActionFilterAttribute in asp.net mvc 3?

我看到在一种情况下我们可以覆盖继承自ActionFilterAttribute类的OnActionExecutingOnActionExecuted方法,如下所示:

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

在其他情况下,我们也可以像这样实现IActionFilterFilterAttribute

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

那么,这两种方法之间是否有任何差异,可能是任何特殊情况下,最好使用其中一种方法而不是另一种方法?

提前致谢。

基本上,FilterAttribute提供MVC属性的最低级别行为,并实现提供Order和AllowMultiple属性的IMvcFilter。

ActionFilterAttribute是过滤操作和结果的基础,因为它是IActionFilter,IResultFilter的实现,并从FilterAttribute继承。

您的MySecondFilterAttribute实现导致ActionFilterAttribute没有IResultFilter功能(OnResultExecuting和OnResultExecuted)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM