Asp.net mvc 为什么要调用base.OnActionExecuting(filterContext);?
我只是在看我的一些旧代码,我有一个动作过滤器(OnActionExecuting方法) 最后我有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() 如果您不需要它,请将其移除
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方法的默认行为),你可以将他的(更完整的)回答标记为已接受。