From ae4e3bc61dd9b4d84c9a2309403ba97d27ed65a2 Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Wed, 30 Apr 2014 16:38:56 -0700 Subject: [PATCH] Adding controller-as-filter support If the controller implements IFilter, it will be added to the filters collection. It's hardcoded to be 'first' as it was in MVC. --- .../Filters/DefaultFilterProvider.cs | 8 ++++++++ .../Microsoft.AspNet.Mvc.Core.kproj | 1 + 2 files changed, 9 insertions(+) diff --git a/src/Microsoft.AspNet.Mvc.Core/Filters/DefaultFilterProvider.cs b/src/Microsoft.AspNet.Mvc.Core/Filters/DefaultFilterProvider.cs index f612f3f61c..e9b8e886eb 100644 --- a/src/Microsoft.AspNet.Mvc.Core/Filters/DefaultFilterProvider.cs +++ b/src/Microsoft.AspNet.Mvc.Core/Filters/DefaultFilterProvider.cs @@ -88,6 +88,14 @@ namespace Microsoft.AspNet.Mvc.Filters ApplyFilterToContainer(filterItem.Filter, filterFactory); } + + var controllerFilter = context.ActionContext.Controller as IFilter; + if (controllerFilter != null) + { + // If the controller implements a filter, we want it to be the first to run. + var descriptor = new FilterDescriptor(controllerFilter, FilterScope.Action); + context.Result.Insert(0, new FilterItem(descriptor, controllerFilter)); + } } private void InsertControllerAsFilter(FilterProviderContext context, IFilter controllerFilter) diff --git a/src/Microsoft.AspNet.Mvc.Core/Microsoft.AspNet.Mvc.Core.kproj b/src/Microsoft.AspNet.Mvc.Core/Microsoft.AspNet.Mvc.Core.kproj index c99bf0c57a..8ce7dd1ad8 100644 --- a/src/Microsoft.AspNet.Mvc.Core/Microsoft.AspNet.Mvc.Core.kproj +++ b/src/Microsoft.AspNet.Mvc.Core/Microsoft.AspNet.Mvc.Core.kproj @@ -110,6 +110,7 @@ +