Click here to Skip to main content
15,892,161 members
Articles / Web Development / ASP.NET

Fluent Filters - Global Action Filters for ASP.NET MVC 2

Rate me:
Please Sign up or sign in to vote.
4.50/5 (4 votes)
8 Nov 2010Apache3 min read 33K   381   10  
This article describes a small library for ASP.NET MVC, that can be used as a facility for registering global filters. It is similar to Global Filter in ASP.NET MVC 3, but with different implementation and features.
#region License
// Copyright (c) Dmitry Antonenko (http://hystrix.com.ua)
// 
// Licensed under the Apache License, Version 2.0 (the "License"); 
// you may not use this file except in compliance with the License. 
// You may obtain a copy of the License at 
// 
// http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software 
// distributed under the License is distributed on an "AS IS" BASIS, 
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
// See the License for the specific language governing permissions and 
// limitations under the License.
// 
// The latest version of this file can be found at http://fluentfilters.codeplex.com/
#endregion

namespace FluentFilters
{
    using System.Web.Mvc;

    public class FluentFiltersActionInvoker : ControllerActionInvoker
    {
        #region Fields

        private readonly IFilterRegistry _registry;

        #endregion

        #region Constructor

        public FluentFiltersActionInvoker(IFilterRegistry registry)
        {
            _registry = registry;
        }

        #endregion

        #region Overridden methods

        /// <summary>
        /// Retrieves information about the action filters
        /// </summary>
        /// <param name="controllerContext">The controller context</param>
        /// <param name="actionDescriptor">The action descriptor</param>
        /// <returns>Information about the action filters</returns>
        protected override FilterInfo GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
        {
            FilterInfo filters = base.GetFilters(controllerContext, actionDescriptor);

            FilterInfo registeredFilters = _registry.GetFilters(new FilterRegistryContext(controllerContext, actionDescriptor));

            foreach (IActionFilter actionFilter in registeredFilters.ActionFilters)
                filters.ActionFilters.Add(actionFilter);
                
            foreach (IAuthorizationFilter authorizationFilter in registeredFilters.AuthorizationFilters)
                filters.AuthorizationFilters.Add(authorizationFilter);
                
            foreach (IExceptionFilter exceptionFilter in registeredFilters.ExceptionFilters)
                filters.ExceptionFilters.Add(exceptionFilter);
                
            foreach (IResultFilter resultFilter in registeredFilters.ResultFilters)
                filters.ResultFilters.Add(resultFilter);

            return filters;
        }

        #endregion
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Apache License, Version 2.0


Written By
Software Developer (Senior) Warner Bros Discovery
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions