internal static string GetControllerHash(this RouteData routeData)
{
//currently the only routable values that we need to care about : area, controller, Namespaces
var builder = new StringBuilder();
builder.Append(routeData.Values.GetRequiredObject("controller"));
builder.Append(routeData.DataTokens.ContainsKey("area")
? routeData.DataTokens["area"].ToString()
: "");
builder.Append(routeData.DataTokens.ContainsKey("Namespaces")
? routeData.DataTokens["Namespaces"].GetType() == typeof (string[])
? string.Join(",", (string[]) routeData.DataTokens["Namespaces"])
: routeData.DataTokens["Namespaces"].ToString()
: "");
return builder.ToString();
}