private string[] GetAndCacheAllMatchingValues(string routeKey, HttpContext httpContext) { var actionDescriptors = GetAndValidateActionDescriptorsCollection(httpContext); var version = actionDescriptors.Version; var valuesCollection = _cachedValuesCollection; if (valuesCollection == null || version != valuesCollection.Version) { var routeValueCollection = actionDescriptors .Items .Select(ad => ad.RouteConstraints .FirstOrDefault( c => c.RouteKey == routeKey && c.KeyHandling == RouteKeyHandling.RequireKey)) .Where(rc => rc != null) .Select(rc => rc.RouteValue) .Distinct() .ToArray(); valuesCollection = new RouteValuesCollection(version, routeValueCollection); _cachedValuesCollection = valuesCollection; } return _cachedValuesCollection.Items; }
private string[] GetAndCacheAllMatchingValues(string routeKey, HttpContext httpContext) { var actionDescriptors = GetAndValidateActionDescriptorsCollection(httpContext); var version = actionDescriptors.Version; var valuesCollection = _cachedValuesCollection; if (valuesCollection == null || version != valuesCollection.Version) { var routeValueCollection = actionDescriptors .Items .Select(ad => ad.RouteConstraints .FirstOrDefault( c => c.RouteKey == routeKey && c.KeyHandling == RouteKeyHandling.RequireKey)) .Where(rc => rc != null) .Select(rc => rc.RouteValue) .Distinct() .ToArray(); valuesCollection = new RouteValuesCollection(version, routeValueCollection); _cachedValuesCollection = valuesCollection; } return(_cachedValuesCollection.Items); }
private string[] GetAndCacheAllMatchingValues(string routeKey, ActionDescriptorCollection actionDescriptors) { var version = actionDescriptors.Version; var valuesCollection = _cachedValuesCollection; if (valuesCollection == null || version != valuesCollection.Version) { var values = new HashSet <string>(StringComparer.OrdinalIgnoreCase); for (var i = 0; i < actionDescriptors.Items.Count; i++) { var action = actionDescriptors.Items[i]; if (action.RouteValues.TryGetValue(routeKey, out var value) && !string.IsNullOrEmpty(value)) { values.Add(value); } } valuesCollection = new RouteValuesCollection(version, values.ToArray()); _cachedValuesCollection = valuesCollection; } return(valuesCollection.Items); }
private string[] GetAndCacheAllMatchingValues(string routeKey, HttpContext httpContext) { var actionDescriptors = GetAndValidateActionDescriptorCollection(httpContext); var version = actionDescriptors.Version; var valuesCollection = _cachedValuesCollection; if (valuesCollection == null || version != valuesCollection.Version) { var values = new HashSet<string>(StringComparer.OrdinalIgnoreCase); for (var i = 0; i < actionDescriptors.Items.Count; i++) { var action = actionDescriptors.Items[i]; string value; if (action.RouteValues.TryGetValue(routeKey, out value) && !string.IsNullOrEmpty(value)) { values.Add(value); } } valuesCollection = new RouteValuesCollection(version, values.ToArray()); _cachedValuesCollection = valuesCollection; } return _cachedValuesCollection.Items; }