コード例 #1
0
    public static string?GetPathByName(
        this LinkGenerator generator,
        string endpointName,
        object?values,
        PathString pathBase     = default,
        FragmentString fragment = default,
        LinkOptions?options     = default)
    {
        if (generator == null)
        {
            throw new ArgumentNullException(nameof(generator));
        }

        if (endpointName == null)
        {
            throw new ArgumentNullException(nameof(endpointName));
        }

        return(generator.GetPathByAddress <string>(endpointName, new RouteValueDictionary(values), pathBase, fragment, options));
    }
コード例 #2
0
        public override string?GetPathByAddress <TAddress>(
            TAddress address,
            RouteValueDictionary values,
            PathString pathBase     = default,
            FragmentString fragment = default,
            LinkOptions?options     = null)
        {
            var endpoints = GetEndpoints(address);

            if (endpoints.Count == 0)
            {
                return(null);
            }

            return(GetPathByEndpoints(
                       httpContext: null,
                       endpoints,
                       values,
                       ambientValues: null,
                       pathBase: pathBase,
                       fragment: fragment,
                       options: options));
        }
コード例 #3
0
        public static string?GetPathByPage(
            this LinkGenerator generator,
            string page,
            string?handler          = default,
            object?values           = default,
            PathString pathBase     = default,
            FragmentString fragment = default,
            LinkOptions?options     = default)
        {
            if (generator == null)
            {
                throw new ArgumentNullException(nameof(generator));
            }

            if (page == null)
            {
                throw new ArgumentNullException(nameof(page));
            }

            var address = CreateAddress(httpContext: null, page, handler, values);

            return(generator.GetPathByAddress(address, address.ExplicitValues, pathBase, fragment, options));
        }
コード例 #4
0
    public static string?GetUriByName(
        this LinkGenerator generator,
        HttpContext httpContext,
        string endpointName,
        object?values,
        string?scheme           = default,
        HostString?host         = default,
        PathString?pathBase     = default,
        FragmentString fragment = default,
        LinkOptions?options     = default)
    {
        if (generator == null)
        {
            throw new ArgumentNullException(nameof(generator));
        }

        if (httpContext == null)
        {
            throw new ArgumentNullException(nameof(httpContext));
        }

        if (endpointName == null)
        {
            throw new ArgumentNullException(nameof(endpointName));
        }

        return(generator.GetUriByAddress <string>(
                   httpContext,
                   endpointName,
                   new RouteValueDictionary(values),
                   ambientValues: null,
                   scheme,
                   host,
                   pathBase,
                   fragment,
                   options));
    }
コード例 #5
0
        public string?GetUriByEndpoints(
            List <RouteEndpoint> endpoints,
            RouteValueDictionary values,
            RouteValueDictionary?ambientValues,
            string scheme,
            HostString host,
            PathString pathBase,
            FragmentString fragment,
            LinkOptions?options)
        {
            for (var i = 0; i < endpoints.Count; i++)
            {
                var endpoint = endpoints[i];
                if (TryProcessTemplate(
                        httpContext: null,
                        endpoint: endpoint,
                        values: values,
                        ambientValues: ambientValues,
                        options: options,
                        result: out var result))
                {
                    var uri = UriHelper.BuildAbsolute(
                        scheme,
                        host,
                        pathBase,
                        result.path,
                        result.query,
                        fragment);
                    Log.LinkGenerationSucceeded(_logger, endpoints, uri);
                    return(uri);
                }
            }

            Log.LinkGenerationFailed(_logger, endpoints);
            return(null);
        }
コード例 #6
0
        public override string?GetUriByAddress <TAddress>(
            TAddress address,
            RouteValueDictionary values,
            string?scheme,
            HostString host,
            PathString pathBase     = default,
            FragmentString fragment = default,
            LinkOptions?options     = null)
        {
            if (string.IsNullOrEmpty(scheme))
            {
                throw new ArgumentException("A scheme must be provided.", nameof(scheme));
            }

            if (!host.HasValue)
            {
                throw new ArgumentException("A host must be provided.", nameof(host));
            }

            var endpoints = GetEndpoints(address);

            if (endpoints.Count == 0)
            {
                return(null);
            }

            return(GetUriByEndpoints(
                       endpoints,
                       values,
                       ambientValues: null,
                       scheme: scheme,
                       host: host,
                       pathBase: pathBase,
                       fragment: fragment,
                       options: options));
        }
コード例 #7
0
ファイル: LinkGenerator.cs プロジェクト: sbauer/AspNetCore
 public abstract string?GetPathByAddress <TAddress>(
     TAddress address,
     RouteValueDictionary values,
     PathString pathBase     = default,
     FragmentString fragment = default,
     LinkOptions?options     = default);
コード例 #8
0
 /// <inheritdoc />
 public override string GetUriByAddress <TAddress>(TAddress address, RouteValueDictionary values, string scheme, HostString host, PathString pathBase = default, FragmentString fragment = default, LinkOptions?options = null) =>
 inner.GetUriByAddress(address, values, scheme, host, pathBase, fragment, options);
コード例 #9
0
 /// <inheritdoc />
 public override string GetUriByAddress <TAddress>(HttpContext httpContext, TAddress address, RouteValueDictionary values, RouteValueDictionary?ambientValues = null, string?scheme = null, HostString?host = null, PathString?pathBase = null, FragmentString fragment = default, LinkOptions?options = null) =>
 inner.GetUriByAddress(httpContext, address, values, ambientValues, scheme, host, pathBase, fragment, options);