Asp.net mvc 为什么要调用base.OnActionExecuting(filterContext);?

Asp.net mvc 为什么要调用base.OnActionExecuting(filterContext);?,asp.net-mvc,asp.net-mvc-3,action-filter,Asp.net Mvc,Asp.net Mvc 3,Action Filter,我只是在看我的一些旧代码,我有一个动作过滤器(OnActionExecuting方法) 最后我有 base.OnActionExecuting(filterContext); 为什么要四处搜索我多次看到这个。我还看到,在我的旧授权标记中,我称为base up 我是否应该始终在之后调用基本方法?我相信,如果通过键入override并在intellisense中选择一个方法并按tab键,Visual Studio将自动在方法体中添加base.MethodName() 如果您不需要它,请将其移除

我只是在看我的一些旧代码,我有一个动作过滤器(OnActionExecuting方法)

最后我有

 base.OnActionExecuting(filterContext); 
为什么要四处搜索我多次看到这个。我还看到,在我的旧授权标记中,我称为base up


我是否应该始终在之后调用基本方法?

我相信,如果通过键入
override
并在intellisense中选择一个方法并按tab键,Visual Studio将自动在方法体中添加
base.MethodName()

如果您不需要它,请将其移除。我总是在创建
ActionFilter
s时删除它,而且还没有出现问题。只有在需要调用基方法时才应该删除它

我应该一直在之后调用基方法吗

这将视情况而定

例如,在授权筛选器(源自
AuthorizeAttribute
)中,如果调用基本方法,则将执行ASP.NET MVC中内置的所有现有授权逻辑。如果您不调用它,则只应用您的授权逻辑


就其他标准操作筛选器而言(源自
actionfilteratAttribute
),所有
OnActionExecuting
OnActionExecuted
OnResultExecuting
OnResultExecuted
都定义为虚拟,但其主体为空,因此,调用或不调用base方法没有任何区别。

我想问题是如何知道何时需要调用base方法。我真的不知道base.OnActionExecuted()的默认行为是什么。@chobo2:看起来Darin Dimitrov回答了上面的问题(关于ActionFilter方法的默认行为),你可以将他的(更完整的)回答标记为已接受。