Click here to Skip to main content
15,891,033 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 32.9K   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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using FluentFilters;
using FluentFilters.Criteria;
using Microsoft.Practices.Unity;
using Website.Core;
using Website.Core.Filters;

namespace Website
{
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        #region Properties

        /// <summary>
        /// Gets Unity container instance.
        /// </summary>
        /// <value>The container.</value>
        public IUnityContainer Container
        {
            get { return UnityContainerFactory.GetContainer(); }
        }

        #endregion

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );
        }

        private void RegisterFluentFilters()
        {
            // Use custom IFilterRegistry
            IFilterRegistry registry = Container.Resolve<UnityFilterRegistry>();

            // Register filters
            registry.Add<BrowserDetectionFilter>(c =>
            {
                c.Exclude(new ControllerFilterCriteria("Account"));
            });

            // Register IFilterRegistry in UnityContainer
            Container.RegisterInstance(registry);
        }

        private void RegisterControllerFactory()
        {
            ControllerBuilder.Current.SetControllerFactory(Container.Resolve<UnityControllerFactory>());
        }

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterRoutes(RouteTable.Routes);

            RegisterFluentFilters();

            RegisterControllerFactory();
        }
    }
}

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