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);
//});
}
}