Skip to content
Makes ASP.NET MVC routes dashed (hyphenated) and lowercase i.e. [Updated]
Branch: master
Clone or download
Pull request Compare This branch is 12 commits ahead, 1 commit behind AtaS:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
LowercaseDashedRouting Fix index out of range issue Jan 30, 2018
.gitattributes Initial Commit Aug 3, 2013
.gitignore Initial Commit Aug 3, 2013
LICENSE Update LICENSE Aug 4, 2013
LowercaseDashedRoute.sln Bug Fix of Issue #1 in GitHub (no dashes when Controller is not speci… Aug 20, 2013 Publishing version 1.3 Dec 30, 2016




See ata's blog post & discussion

Requires .NET 4.0 or .NET 4.5.


Install-Package **LowercaseDashedRouteEx**

What is new in 1.1 ?

New: Support for 'namespace' constraints are added.
New: Added support for Areas.
New: Many new overloads for the class constructor.


If you use: Html.ActionLink("User Profile", "UserProfile", "Account")

Without Lowercase Dashed Route the url is:

With Lowercase Dashed Route the url is:

Initial Configuration

Open RouteConfig.cs in App_Start folder. Comment out old routes.MapRoute(...) call and instead use:
routes.Add(new LowercaseDashedRoute("{controller}/{action}/{id}",
    new RouteValueDictionary(
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }),
        new DashedRouteHandler()

If you are using areas, use the code below in your XxxAreaRegistration.cs file instead of default one and replace "AreaName"s with yours:

var route = new LowercaseDashedRoute("AreaName/{controller}/{action}/{id}",
        new RouteValueDictionary(
                action = "Index",
                id = UrlParameter.Optional
        new DashedRouteHandler(),
context.Routes.Add("AreaName_default", route);

Ata Sasmaz
Salar Khalilzadeh alpha

You can’t perform that action at this time.