NuGetGallery.SeoRoute.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)
        {
            //return TransactionLock.Enter("getvirtualpath", () =>
            //{
                var hyphenatedValue = new StringBuilder();
                var lowerCaseValues = new RouteValueDictionary();

                foreach (var v in values)
                {
                    hyphenatedValue.Clear();

                    if (v.Key == null || v.Value == null)
                    {
                        continue;
                    }

                    foreach (var valueChar in v.Value.ToString())
                    {
                        if (Char.IsUpper(valueChar) && hyphenatedValue.Length != 0)
                        {
                            hyphenatedValue.Append("-");
                        }

                        hyphenatedValue.Append(valueChar.ToString().Replace('_', '-'));
                    }

                    switch (v.Key.ToUpperInvariant())
                    {
                        case "ACTION":
                        case "AREA":
                        case "CONTROLLER":
                            lowerCaseValues.Add(v.Key, (hyphenatedValue.Replace("--", "-").ToString()).ToLowerInvariant());
                            break;
                        default:
                            lowerCaseValues.Add(v.Key, v.Value);
                            break;
                    }
                }

                return base.GetVirtualPath(requestContext, lowerCaseValues);
            //});
        }
    }