/// <summary>
 /// Generates an OData link using the default OData route name.
 /// </summary>
 /// <param name="urlHelper">The URL helper.</param>
 /// <param name="pathHandler">The path handler to use for generating the link.</param>
 /// <param name="segments">The OData path segments.</param>
 /// <returns>The geerated OData link.</returns>
 public static string ODataLink(this UrlHelper urlHelper, IODataPathHandler pathHandler, IList<ODataPathSegment> segments)
 {
     string odataPath = pathHandler.Link(new ODataPath(segments));
     return urlHelper.Link(
         ODataRouteConstants.RouteName,
         new HttpRouteValueDictionary() { { ODataRouteConstants.ODataPath, odataPath } });
 }
        /// <summary>
        /// Generates an OData link using the given OData route name and path handler.
        /// </summary>
        /// <param name="urlHelper">The URL helper.</param>
        /// <param name="routeName">The name of the OData route.</param>
        /// <param name="pathHandler">The path handler to use for generating the link.</param>
        /// <param name="segments">The OData path segments.</param>
        /// <returns>The generated OData link.</returns>
        public static string ODataLink(this UrlHelper urlHelper, string routeName, IODataPathHandler pathHandler, IList<ODataPathSegment> segments)
        {
            if (urlHelper == null)
            {
                throw Error.ArgumentNull("urlHelper");
            }

            if (pathHandler == null)
            {
                throw Error.ArgumentNull("pathHandler");
            }

            string odataPath = pathHandler.Link(new ODataPath(segments));

            string directLink = urlHelper.GenerateLinkDirectly(routeName, odataPath);
            if (directLink != null)
            {
                return directLink;
            }

            // Slow path : use urlHelper.Link because the fast path failed
            return urlHelper.Link(
                routeName,
                new HttpRouteValueDictionary() { { ODataRouteConstants.ODataPath, odataPath } });
        }
        /// <summary>
        /// Generates an OData link using the given OData route name and path handler.
        /// </summary>
        /// <param name="urlHelper">The URL helper.</param>
        /// <param name="routeName">The name of the OData route.</param>
        /// <param name="pathHandler">The path handler to use for generating the link.</param>
        /// <param name="segments">The OData path segments.</param>
        /// <returns>The generated OData link.</returns>
        public static string ODataLink(this UrlHelper urlHelper, string routeName, IODataPathHandler pathHandler, IList <ODataPathSegment> segments)
        {
            if (urlHelper == null)
            {
                throw Error.ArgumentNull("urlHelper");
            }

            if (pathHandler == null)
            {
                throw Error.ArgumentNull("pathHandler");
            }

            string odataPath = pathHandler.Link(new ODataPath(segments));

            string directLink = urlHelper.GenerateLinkDirectly(routeName, odataPath);

            if (directLink != null)
            {
                return(directLink);
            }

            // Slow path : use urlHelper.Link because the fast path failed
            return(urlHelper.Link(
                       routeName,
                       new HttpRouteValueDictionary()
            {
                { ODataRouteConstants.ODataPath, odataPath }
            }));
        }
Exemple #4
0
        public static string EntitySetLink(this IODataPathHandler parser, string entitySet, object id)
        {
            ODataPath path = new ODataPath(
                new EntitySetPathSegment(entitySet),
                new KeyValuePathSegment(ODataUriUtils.ConvertToUriLiteral(id, Microsoft.Data.OData.ODataVersion.V3)));

            return(parser.Link(path));
        }
Exemple #5
0
        public static string NavigationLink(this IODataPathHandler parser, string entitySet, object key, IEdmNavigationProperty navigationProperty)
        {
            ODataPath path = new ODataPath(
                new EntitySetPathSegment(entitySet),
                new KeyValuePathSegment(ODataUriUtils.ConvertToUriLiteral(key, Microsoft.Data.OData.ODataVersion.V3)),
                new NavigationPathSegment(navigationProperty));

            return(parser.Link(path));
        }
Exemple #6
0
    public static string ODataUrl(this UrlHelper urlHelper, string routeName, params ODataPathSegment[] segments)
    {
        var odataPath = _pathHandler.Link(new ODataPath(segments));

        return(urlHelper.Route(routeName, new RouteValueDictionary()
        {
            { ODataRouteConstants.ODataPath, odataPath }
        }));
    }
Exemple #7
0
        /// <summary>
        /// The o data url.
        /// </summary>
        /// <param name="urlHelper">
        /// The url helper.
        /// </param>
        /// <param name="routeName">
        /// The route name.
        /// </param>
        /// <param name="segments">
        /// The segments.
        /// </param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        public static string OdataUrl(this UrlHelper urlHelper, string routeName, params ODataPathSegment[] segments)
        {
            var odataPath = PathHandler.Link(new Microsoft.AspNet.OData.Routing.ODataPath(segments));

            return(urlHelper.HttpRouteUrl(
                       routeName,
                       new RouteValueDictionary {
                { ODataRouteConstants.ODataPath, odataPath }
            }));
        }
        /// <summary>
        /// Generates an OData link using the default OData route name.
        /// </summary>
        /// <param name="urlHelper">The URL helper.</param>
        /// <param name="pathHandler">The path handler to use for generating the link.</param>
        /// <param name="segments">The OData path segments.</param>
        /// <returns>The geerated OData link.</returns>
        public static string ODataLink(this UrlHelper urlHelper, IODataPathHandler pathHandler, IList <ODataPathSegment> segments)
        {
            string odataPath = pathHandler.Link(new ODataPath(segments));

            return(urlHelper.Link(
                       ODataRouteConstants.RouteName,
                       new HttpRouteValueDictionary()
            {
                { ODataRouteConstants.ODataPath, odataPath }
            }));
        }
        /// <summary>
        /// Generates an OData link using the given OData route name and path handler.
        /// </summary>
        /// <param name="urlHelper">The URL helper.</param>
        /// <param name="routeName">The name of the OData route.</param>
        /// <param name="pathHandler">The path handler to use for generating the link.</param>
        /// <param name="segments">The OData path segments.</param>
        /// <returns>The generated OData link.</returns>
        public static string ODataLink(this UrlHelper urlHelper, string routeName, IODataPathHandler pathHandler, IList<ODataPathSegment> segments)
        {
            if (urlHelper == null)
            {
                throw Error.ArgumentNull("urlHelper");
            }

            if (pathHandler == null)
            {
                throw Error.ArgumentNull("pathHandler");
            }

            string odataPath = pathHandler.Link(new ODataPath(segments));
            return urlHelper.Link(
                routeName,
                new HttpRouteValueDictionary() { { ODataRouteConstants.ODataPath, odataPath } });
        }
Exemple #10
0
        /// <summary>
        /// Generates an OData link using the given OData route name, path handler, and segments.
        /// </summary>
        /// <param name="routeName">The name of the OData route.</param>
        /// <param name="pathHandler">The path handler to use for generating the link.</param>
        /// <param name="segments">The OData path segments.</param>
        /// <returns>The generated OData link.</returns>
        public string CreateODataLink(string routeName, IODataPathHandler pathHandler, IList <ODataPathSegment> segments)
        {
            if (String.IsNullOrEmpty(routeName))
            {
                throw Error.InvalidOperation(SRResources.RequestMustHaveODataRouteName);
            }

            if (pathHandler == null)
            {
                throw Error.ArgumentNull("pathHandler");
            }

            string odataPath = pathHandler.Link(new ODataPath(segments));

            return(this.innerHelper.Link(
                       routeName,
                       new RouteValueDictionary()
            {
                { ODataRouteConstants.ODataPath, odataPath }
            }));
        }
        /// <summary>
        /// Generates an OData link using the given OData route name and path handler.
        /// </summary>
        /// <param name="urlHelper">The URL helper.</param>
        /// <param name="routeName">The name of the OData route.</param>
        /// <param name="pathHandler">The path handler to use for generating the link.</param>
        /// <param name="segments">The OData path segments.</param>
        /// <returns>The generated OData link.</returns>
        public static string ODataLink(this UrlHelper urlHelper, string routeName, IODataPathHandler pathHandler, IList <ODataPathSegment> segments)
        {
            if (urlHelper == null)
            {
                throw Error.ArgumentNull("urlHelper");
            }

            if (pathHandler == null)
            {
                throw Error.ArgumentNull("pathHandler");
            }

            string odataPath = pathHandler.Link(new ODataPath(segments));

            return(urlHelper.Link(
                       routeName,
                       new HttpRouteValueDictionary()
            {
                { ODataRouteConstants.ODataPath, odataPath }
            }));
        }