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

时间:2011-06-19 00:45:16

标签: asp.net-mvc asp.net-mvc-3 action-filter

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

并且最后我有

 base.OnActionExecuting(filterContext); 

为什么要四处搜寻,我会看到这几次。我也看到,在我的旧授权标签中,我称之为基础。

我应该总是在之后调用基本方法吗?

2 个答案:

答案 0 :(得分:58)

  

我应该总是在之后调用基本方法吗?

这取决于具体情况。

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

就其他标准操作过滤器而言(源自ActionFilterAttribute),所有OnActionExecutingOnActionExecutedOnResultExecutingOnResultExecuted都定义为虚拟但是他们的身体是空的,所以如果你打电话或不打基础方法,它没有任何区别。

答案 1 :(得分:1)

我相信如果您让Visual Studio通过键入override并在intellisense中选择方法并按Tab键自动生成覆盖方法,Visual Studio将自动在方法体中添加base.MethodName()

如果您不需要,请将其删除。我一直在创建ActionFilter时删除它并且还没有出现问题。你不应该删除它的唯一时间是你需要调用基本方法。