TidyRouting.TidyRoute.GetVirtualPath C# (CSharp) Method

GetVirtualPath() public method

public GetVirtualPath ( System.Web.Routing.RequestContext requestContext, RouteValueDictionary values ) : System.Web.Routing.VirtualPathData
requestContext System.Web.Routing.RequestContext
values RouteValueDictionary
return System.Web.Routing.VirtualPathData
        public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
        {
            VirtualPathData path = base.GetVirtualPath(requestContext, values);

            if (path != null && path.VirtualPath != String.Empty)
            {
                int qsIndex = path.VirtualPath.IndexOf("?", StringComparison.Ordinal);

                // Lower Case
                string newPath = qsIndex >= 0
                                     ? path.VirtualPath.Substring(0, qsIndex).ToLowerInvariant()
                                     : path.VirtualPath.ToLowerInvariant();

                // Trailing Slash
                if (newPath.Length > 0 && newPath[newPath.Length - 1] != '/')
                    newPath += '/';

                // Preserve Query String
                if (qsIndex >= 0)
                    newPath += path.VirtualPath.Substring(qsIndex);

                path.VirtualPath = newPath;
            }

            return path;
        }