mvcdonutcaching icon indicating copy to clipboard operation
mvcdonutcaching copied to clipboard

Order of route values shouldn't impact key built

Open jonathanjto opened this issue 7 years ago • 1 comments

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

jonathanjto avatar Feb 14 '18 14:02 jonathanjto

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

jonathanjto avatar Feb 15 '18 15:02 jonathanjto