Ideas on Global Filter Providers in MVC 3

by 23. July 2010 02:15

Today I enjoyed a session (technically i'm still listening) by Phil Haack of Microsoft at the Virtual MVC conference discussing MVC 3. He discussed Global Filter providers which will enable you to apply a filter attribute to a number of controllers in pretty much a single line of code. He also showed Conditional Filters which can be used to conditionally apply a filter based on some code check (his example was a check as to whether we were in debug mode).

I have been working with filters today and it solved something i was thinking about today. I like the idea of extending it and i suspect that (and i don't know any more about them than what i saw on the slides) conditional filters *may* solve a number of things i'd like to be able to do.

So I asked a question about using RegEx and patterns with the filters. What I mean by that is being able to read the metadata of the controller classes and methods and being able to apply filters conditionally to them.

For example:

 

  • Apply a trace filter to an methods marked with [HttpPost]
  • Apply a debug filter whenever a method in the "AccountController" or "ProfileContoller" is called.
  • ... even apply a debug filter whenever a method called "Save" is called in the "AccountController" or "ProfileContoller" is called.
These are some basic examples, but with the ability to apply global filters combined with an ability to read metadata on controllers, methods and so on (and perhaps even the state of the user or application) you can imagine a host of neat filters that could be quickly added to your code.

Further, being able to specify these rules declaratively and using a declarative service locator technique to accomplish DI for your filters could mean it would be super easy to attach filters to your applications without recompiling.

 

Tags: , , ,

tech