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;
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
        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;
        }