Note that there are some explanatory texts on larger screens.

plurals
  1. POmaking URL lowercase. Any easy or builtin way?
    text
    copied!<p>Is there any easy/builtin way to make URL in lowercase for MVC3.</p> <p>I have code that could do it but looking something simple to implement.</p> <pre><code> routes.MapRouteLowercase( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "index", id = UrlParameter.Optional } // Parameter defaults ); public class LowercaseRoute : Route { public LowercaseRoute(string url, IRouteHandler routeHandler) : base(url, routeHandler) { } public LowercaseRoute(string url, RouteValueDictionary defaults, IRouteHandler routeHandler) : base(url, defaults, routeHandler) { } public LowercaseRoute(string url, RouteValueDictionary defaults, RouteValueDictionary constraints, IRouteHandler routeHandler) : base(url, defaults, constraints, routeHandler) { } public LowercaseRoute(string url, RouteValueDictionary defaults, RouteValueDictionary constraints, RouteValueDictionary dataTokens, IRouteHandler routeHandler) : base(url, defaults, constraints, dataTokens, routeHandler) { } public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) { VirtualPathData path = base.GetVirtualPath(requestContext, values); if (path != null) { path.VirtualPath = path.VirtualPath.ToLowerInvariant(); } return path; } } public static class RouteCollectionExtensions { public static Route MapRouteLowercase(this RouteCollection routes, string name, string url) { return routes.MapRouteLowercase(name, url, null /* defaults */, (object)null /* constraints */); } public static Route MapRouteLowercase(this RouteCollection routes, string name, string url, object defaults) { return routes.MapRouteLowercase(name, url, defaults, (object)null /* constraints */); } public static Route MapRouteLowercase(this RouteCollection routes, string name, string url, object defaults, object constraints) { return routes.MapRouteLowercase(name, url, defaults, constraints, null /* namespaces */); } public static Route MapRouteLowercase(this RouteCollection routes, string name, string url, string[] namespaces) { return routes.MapRouteLowercase(name, url, null /* defaults */, null /* constraints */, namespaces); } public static Route MapRouteLowercase(this RouteCollection routes, string name, string url, object defaults, string[] namespaces) { return routes.MapRouteLowercase(name, url, defaults, null /* constraints */, namespaces); } public static Route MapRouteLowercase(this RouteCollection routes, string name, string url, object defaults, object constraints, string[] namespaces) { if (routes == null) { throw new ArgumentNullException("routes"); } if (url == null) { throw new ArgumentNullException("url"); } Route route = new LowercaseRoute(url, new MvcRouteHandler()) { Defaults = new RouteValueDictionary(defaults), Constraints = new RouteValueDictionary(constraints), DataTokens = new RouteValueDictionary() }; if ((namespaces != null) &amp;&amp; (namespaces.Length &gt; 0)) { route.DataTokens["Namespaces"] = namespaces; } routes.Add(name, route); return route; } public static Route MapRouteLowercase(this AreaRegistrationContext context, string name, string url) { return context.MapRouteLowercase(name, url, (object)null /* defaults */); } public static Route MapRouteLowercase(this AreaRegistrationContext context, string name, string url, object defaults) { return context.MapRouteLowercase(name, url, defaults, (object)null /* constraints */); } public static Route MapRouteLowercase(this AreaRegistrationContext context, string name, string url, object defaults, object constraints) { return context.MapRouteLowercase(name, url, defaults, constraints, null /* namespaces */); } public static Route MapRouteLowercase(this AreaRegistrationContext context, string name, string url, string[] namespaces) { return context.MapRouteLowercase(name, url, (object)null /* defaults */, namespaces); } public static Route MapRouteLowercase(this AreaRegistrationContext context, string name, string url, object defaults, string[] namespaces) { return context.MapRouteLowercase(name, url, defaults, null /* constraints */, namespaces); } public static Route MapRouteLowercase(this AreaRegistrationContext context, string name, string url, object defaults, object constraints, string[] namespaces) { if (namespaces == null &amp;&amp; context.Namespaces != null) { namespaces = context.Namespaces.ToArray(); } Route route = context.Routes.MapRouteLowercase(name, url, defaults, constraints, namespaces); route.DataTokens["area"] = context.AreaName; // disabling the namespace lookup fallback mechanism keeps this areas from accidentally picking up // controllers belonging to other areas bool useNamespaceFallback = (namespaces == null || namespaces.Length == 0); route.DataTokens["UseNamespaceFallback"] = useNamespaceFallback; return route; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload