Is there a "global" OnActionExecuting that I can override to have all my MVC actions (regardless of controller) do something when they get called? If so, how?
Asp.net MVC3 added support for Global Filters
From the ScottGu blog:
ASP.NET MVC supports the ability to declaratively apply “cross-cutting” logic using a mechanism called “filters”. You can specify filters on Controllers and Action Methods today using an attribute syntax like so:
Developers often want to apply some filter logic across all controllers within an application. ASP.NET MVC 3 now enables you to specify that a filter should apply globally to all Controllers within an application. You can now do this by adding it to the GlobalFilters
collection. A RegisterGlobalFilters()
method is now included in the default Global.asax class template to provide a convenient place to do this (it is then called by the Application_Start()
method):
The filter resolution logic in MVC 3 is flexible so that you can configure a global filter that only applies conditionally if certain conditions are met (for example: debugging is enabled, or if a request uses a particular http verb, etc). Filters can also now be resolved from a Dependency Injection (DI) container.
Nope. The easiest way to do this is to write a common base class that all of your controller types subclass, then stick an action filter on that base class or override its OnActionExecuting() method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With