我只是看一下我的一些旧代码,我有一个动作过滤器(OnActionExecuting方法)
并且最后我有
base.OnActionExecuting(filterContext);
为什么要四处搜寻,我会看到这几次。我也看到,在我的旧授权标签中,我称之为基础。
我应该总是在之后调用基本方法吗?
答案 0 :(得分:58)
我应该总是在之后调用基本方法吗?
这取决于具体情况。
例如,在授权过滤器(从AuthorizeAttribute
派生)中,如果调用基本方法,则将执行ASP.NET MVC中内置的所有现有授权逻辑。如果您不调用它,则只应用您的授权逻辑。
就其他标准操作过滤器而言(源自ActionFilterAttribute
),所有OnActionExecuting
,OnActionExecuted
,OnResultExecuting
和OnResultExecuted
都定义为虚拟但是他们的身体是空的,所以如果你打电话或不打基础方法,它没有任何区别。
答案 1 :(得分:1)
我相信如果您让Visual Studio通过键入override
并在intellisense中选择方法并按Tab键自动生成覆盖方法,Visual Studio将自动在方法体中添加base.MethodName()
。
如果您不需要,请将其删除。我一直在创建ActionFilter
时删除它并且还没有出现问题。你不应该删除它的唯一时间是你需要调用基本方法。