mvcdonutcaching
mvcdonutcaching copied to clipboard
Order of route values shouldn't impact key built
Hi,
When manipulating items using the methods of the OutputCacheManager, RemoveItem for example.
The order of the "RouteValues" should not be important.
Just add "OrderBy" key to this code in the KeyBuilder class for the method public string BuildKey(string controllerName, string actionName, RouteValueDictionary routeValues)
if (routeValues != null)
{
foreach (var routeValue in routeValues.OrderBy(c => c.Key))
{
builder.Append(BuildKeyFragment(routeValue));
}
}
Best regards
// Same here, if no value in params - don't use it in the key (area empty or not specified should be the same key fragment)
public string BuildKeyFragment(KeyValuePair<string, object> routeValue)
{
var value = routeValue.Value?.ToString().ToLowerInvariant() ?? "<null>";
if (!string.IsNullOrWhiteSpace(value))
{
return string.Format("{0}={1}#", routeValue.Key.ToLowerInvariant(), value);
}
return "";
}