Why call base.OnActionExecuting(filterContext);?

chobo2 picture chobo2 · Jun 19, 2011 · Viewed 9.2k times · Source

I am just looking at some old code of mine and I have an action filter(OnActionExecuting method)

and at the end of it I have

 base.OnActionExecuting(filterContext); 

Why searching around I see this quite a few times. I also see that in my old Authorize tag I call the base up.

Should I be always be calling the base methods after?

Answer

Darin Dimitrov picture Darin Dimitrov · Jun 19, 2011

Should I be always be calling the base methods after?

That will depend on the situation.

For example in authorization filters (deriving from AuthorizeAttribute) if you call the base method then all the existing authorization logic built into ASP.NET MVC will be executed. If you don't call it, only your authorization logic will be applied.

As far as other standard action filters are concerned (deriving from ActionFilterAttribute) all the OnActionExecuting, OnActionExecuted, OnResultExecuting and OnResultExecuted are defined as virtual but their body is empty, so it doesn't make any difference if you call or not the base method.