Asp.net
在asp.net mvc 3中實現FilterAttribute,IActionFilter和從ActionFilterAttribute繼承有什麼區別?
我看到在一種情況下,我們可以像這樣覆蓋
OnActionExecuting或OnActionExecuted繼承自ActionFilterAttribute類的方法:public class MyFilterAttribute : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext filterContext) { // bla bla } }
IActionFilter在其他情況下,我們也可以FilterAttribute像這樣實現:public class MySecondFilterAttribute : FilterAttribute, IActionFilter { public void OnActionExecuted(ActionExecutingContext filterContext) {} }那麼,這兩種方法之間是否有任何區別,也許在任何特定情況下,最好使用其中一種而不是另一種?
提前致謝。
基本上,FilterAttribute 提供了 MVC 屬性的最低級別的行為,並實現了提供 Order 和 AllowMultiple 屬性的 IMvcFilter。
ActionFilterAttribute 是過濾動作和結果的基礎,因為它是 IActionFilter、IResultFilter 的實現,並繼承自 FilterAttribute。
您的 MySecondFilterAttribute 實現導致 ActionFilterAttribute 沒有 IResultFilter 功能(OnResultExecuting 和 OnResultExecuted)。