• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# Routing.ODataPath类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中System.Web.Http.OData.Routing.ODataPath的典型用法代码示例。如果您正苦于以下问题:C# ODataPath类的具体用法?C# ODataPath怎么用?C# ODataPath使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ODataPath类属于System.Web.Http.OData.Routing命名空间,在下文中一共展示了ODataPath类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: SelectAction

        public override string SelectAction(ODataPath odataPath, HttpControllerContext controllerContext, ILookup<string, HttpActionDescriptor> actionMap)
        {
            var action = base.SelectAction(odataPath, controllerContext, actionMap);
            if (action != null)
            {
                var routeValues = controllerContext.RouteData.Values;
                if (routeValues.ContainsKey(ODataRouteConstants.Key))
                {
                    var keyRaw = routeValues[ODataRouteConstants.Key] as string;
                    IEnumerable<string> compoundKeyPairs = keyRaw.Split(',');
                    if (compoundKeyPairs == null || !compoundKeyPairs.Any())
                    {
                        return action;
                    }

                    foreach (var compoundKeyPair in compoundKeyPairs)
                    {
                        string[] pair = compoundKeyPair.Split('=');
                        if (pair == null || pair.Length != 2)
                        {
                            continue;
                        }
                        var keyName = pair[0].Trim();
                        var keyValue = pair[1].Trim();

                        routeValues.Add(keyName, keyValue);
                    }
                }
            }

            return action;
        }
开发者ID:gitter-badger,项目名称:WealthEconomy,代码行数:32,代码来源:CompositeKeyRoutingConvention.cs


示例2: SelectController

 public string SelectController(ODataPath odataPath, HttpRequestMessage request)
 {
     var controller = delegateRoutingConvention.SelectController(odataPath, request);
     return string.Equals(controller, controllerAlias, StringComparison.OrdinalIgnoreCase)
         ? targetControllerName
         : controller;
 }
开发者ID:Pliner,项目名称:TinyFeed,代码行数:7,代码来源:ControllerAliasingODataRoutingConvention.cs


示例3: SelectAction

        public string SelectAction(ODataPath odataPath, HttpControllerContext controllerContext, ILookup<string, HttpActionDescriptor> actionMap)
        {
            if (odataPath.PathTemplate != "~/entityset/key/property")
            {
                return null;
            }

            var entitySetPathSegment = odataPath.Segments.OfType<EntitySetPathSegment>().Single();
            var keyValuePathSegment = odataPath.Segments.OfType<KeyValuePathSegment>().Single();
            var propertyAccessPathSegment = odataPath.Segments.OfType<PropertyAccessPathSegment>().Single();

            var actionName = string.Format(CultureInfo.InvariantCulture, "GetPropertyFrom{0}", entitySetPathSegment.EntitySetName);

            if (actionMap.Contains(actionName) && actionMap[actionName].Any(desc => MatchHttpMethod(desc, controllerContext.Request.Method)))
            {
                controllerContext.RouteData.Values.Add("propertyName", propertyAccessPathSegment.PropertyName);

                if (!CompositeODataKeyHelper.TryEnrichRouteValues(keyValuePathSegment.Value, controllerContext.RouteData.Values))
                {
                    controllerContext.RouteData.Values.Add("key", keyValuePathSegment.Value);
                }

                return actionName;
            }

            return null;
        }
开发者ID:ZhiYuanHuang,项目名称:NuGetGallery,代码行数:27,代码来源:EntitySetPropertyRoutingConvention.cs


示例4: SelectAction

        public override string SelectAction(ODataPath odataPath, HttpControllerContext context,
            ILookup<string, HttpActionDescriptor> actionMap)
        {
            if (context.Request.Method == HttpMethod.Get &&
                odataPath.PathTemplate == "~/entityset/key/navigation/key")
            {
                NavigationPathSegment navigationSegment = odataPath.Segments[2] as NavigationPathSegment;
                IEdmNavigationProperty navigationProperty = navigationSegment.NavigationProperty.Partner;
                IEdmEntityType declaringType = navigationProperty.DeclaringType as IEdmEntityType;

                string actionName = "Get" + declaringType.Name;
                if (actionMap.Contains(actionName))
                {
                    // Add keys to route data, so they will bind to action parameters.
                    KeyValuePathSegment keyValueSegment = odataPath.Segments[1] as KeyValuePathSegment;
                    context.RouteData.Values[ODataRouteConstants.Key] = keyValueSegment.Value;

                    KeyValuePathSegment relatedKeySegment = odataPath.Segments[3] as KeyValuePathSegment;
                    context.RouteData.Values[ODataRouteConstants.RelatedKey] = relatedKeySegment.Value;

                    return actionName;
                }
            }
            // Not a match.
            return null;
        }
开发者ID:webdev2,项目名称:NajranService,代码行数:26,代码来源:ODataConventions.cs


示例5: SelectController

 public string SelectController(ODataPath odataPath, HttpRequestMessage request)
 {
     if (odataPath.PathTemplate == "~/action/$count")
     {
         return controllerName;
     }
     return null;
 }
开发者ID:battenworks,项目名称:NuGet.Lucene,代码行数:8,代码来源:NonBindableActionCountRoutingConvention.cs


示例6: SelectController

 public string SelectController(ODataPath odataPath, HttpRequestMessage request)
 {
     if (odataPath.PathTemplate == "~/entityset/key/property")
     {
         return _controllerName;
     }
     return null;
 }
开发者ID:ZhiYuanHuang,项目名称:NuGetGallery,代码行数:8,代码来源:EntitySetPropertyRoutingConvention.cs


示例7: SelectController

 // Route all non-bindable actions to a single controller.
 public string SelectController(ODataPath odataPath, System.Net.Http.HttpRequestMessage request)
 {
     if (odataPath.PathTemplate == "~/action")
     {
         return _controllerName;
     }
     return null;
 }
开发者ID:ErikWitkowski,项目名称:Simple.OData.Client,代码行数:9,代码来源:NonBindableActionRoutingConvention.cs


示例8: SelectAction

        public override string SelectAction(ODataPath odataPath, HttpControllerContext controllerContext, ILookup<string, HttpActionDescriptor> actionMap)
        {
            if (controllerContext.Request.Method != HttpMethod.Get || odataPath.PathTemplate != "~/entityset/$count")
            {
                return null;
            }

            return actionMap.Contains("GetCount") ? "GetCount" : null;
        }
开发者ID:battenworks,项目名称:NuGet.Lucene,代码行数:9,代码来源:EntitySetCountRoutingConvention.cs


示例9: GetNavigationProperty

        private static IEdmNavigationProperty GetNavigationProperty(ODataPath path)
        {
            if (path == null)
            {
                throw new SerializationException(SRResources.ODataPathMissing);
            }

            return path.GetNavigationProperty();
        }
开发者ID:quentez,项目名称:aspnetwebstack,代码行数:9,代码来源:ODataEntityReferenceLinkDeserializer.cs


示例10: SelectAction

 public override string SelectAction(ODataPath odataPath, HttpControllerContext controllerContext, ILookup<string, HttpActionDescriptor> actionMap)
 {
     string result = base.SelectAction(odataPath, controllerContext, actionMap);
     IDictionary<string, object> conventionStore = controllerContext.Request.ODataProperties().RoutingConventionsStore;
     if (result != null && conventionStore != null)
     {
         conventionStore["keyAsCustomer"] = new BindCustomer { Id = int.Parse((string)controllerContext.RouteData.Values["key"]) };
     }
     return result;
 }
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:10,代码来源:ODataValueProviderTests.cs


示例11: AddLinkInfoToRouteData

 private static void AddLinkInfoToRouteData(IHttpRouteData routeData, ODataPath odataPath)
 {
     KeyValuePathSegment keyValueSegment = odataPath.Segments.OfType<KeyValuePathSegment>().First();
     routeData.Values[ODataRouteConstants.Key] = keyValueSegment.Value;
     KeyValuePathSegment relatedKeySegment = odataPath.Segments.Last() as KeyValuePathSegment;
     if (relatedKeySegment != null)
     {
         routeData.Values[ODataRouteConstants.RelatedKey] = relatedKeySegment.Value;
     }
 }
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:10,代码来源:LinkRoutingConvention2.cs


示例12: SelectAction

        public override string SelectAction(ODataPath odataPath, HttpControllerContext controllerContext, ILookup<string, HttpActionDescriptor> actionMap)
        {
            if (odataPath == null)
            {
                throw new ArgumentNullException("odataPath");
            }
            if (controllerContext == null)
            {
                throw new ArgumentNullException("controllerContext");
            }
            if (actionMap == null)
            {
                throw new ArgumentNullException("actionMap");
            }
            HttpMethod requestMethod = controllerContext.Request.Method;
            if (odataPath.PathTemplate == "~/entityset/key/$links/navigation" 
                || odataPath.PathTemplate == "~/entityset/key/cast/$links/navigation"
                || odataPath.PathTemplate == "~/entityset/key/$links/navigation/key"
                || odataPath.PathTemplate == "~/entityset/key/cast/$links/navigation/key")
            {
                var actionName = string.Empty;
                if ((requestMethod == HttpMethod.Post) || (requestMethod == HttpMethod.Put))
                {
                    actionName += "CreateLinkTo";
                }
                else if (requestMethod == HttpMethod.Delete)
                {
                    actionName += "DeleteLinkTo";
                }
                else
                {
                    return null;
                }
                var navigationSegment = odataPath.Segments.OfType<NavigationPathSegment>().Last();
                actionName += navigationSegment.NavigationPropertyName;

                var castSegment = odataPath.Segments[2] as CastPathSegment;
                if (castSegment != null)
                {
                    var actionCastName = string.Format("{0}On{1}", actionName, castSegment.CastType.Name);
                    if (actionMap.Contains(actionCastName))
                    {
                        AddLinkInfoToRouteData(controllerContext.RouteData, odataPath);
                        return actionCastName;
                    }
                }

                if (actionMap.Contains(actionName))
                {
                    AddLinkInfoToRouteData(controllerContext.RouteData, odataPath);
                    return actionName;
                }
            }
            return null;
        }
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:55,代码来源:LinkRoutingConvention2.cs


示例13: WriteObject_Throws_ObjectCannotBeWritten_IfGraphIsNotUri

        public void WriteObject_Throws_ObjectCannotBeWritten_IfGraphIsNotUri()
        {
            IEdmNavigationProperty navigationProperty = _customerSet.ElementType.NavigationProperties().First();
            ODataEntityReferenceLinksSerializer serializer = new ODataEntityReferenceLinksSerializer();
            ODataPath path = new ODataPath(new NavigationPathSegment(navigationProperty));
            ODataSerializerContext writeContext = new ODataSerializerContext { EntitySet = _customerSet, Path = path };

            Assert.Throws<SerializationException>(
                () => serializer.WriteObject(graph: "not uri", messageWriter: ODataTestUtil.GetMockODataMessageWriter(), writeContext: writeContext),
                "ODataEntityReferenceLinksSerializer cannot write an object of type 'System.String'.");
        }
开发者ID:brianly,项目名称:aspnetwebstack,代码行数:11,代码来源:ODataEntityReferenceLinksSerializerTest.cs


示例14: SelectAction

        public override string SelectAction(ODataPath odataPath, HttpControllerContext controllerContext, ILookup<string, HttpActionDescriptor> actionMap)
        {
            var action = base.SelectAction(odataPath, controllerContext, actionMap);

            if (action != null)
            {
                controllerContext.RouteData.DecomposeKey();
            }

            return action;
        }
开发者ID:battenworks,项目名称:NuGet.Lucene,代码行数:11,代码来源:CompositeKeyPropertyRoutingConvention.cs


示例15: ToStringWithNoSegments

        public void ToStringWithNoSegments()
        {
            // Arrange
            ODataPath path = new ODataPath();

            // Act
            string value = path.ToString();

            // Assert
            Assert.Empty(value);
        }
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:11,代码来源:ODataPathTest.cs


示例16: SelectAction

        public virtual string SelectAction(ODataPath odataPath, HttpControllerContext controllerContext, ILookup<string, HttpActionDescriptor> actionMap)
        {
            var action = entityRoutingConvention.SelectAction(odataPath, controllerContext, actionMap);
            if (action == null)
            {
                return null;
            }

            controllerContext.RouteData.DecomposeKey();

            return action;
        }
开发者ID:battenworks,项目名称:NuGet.Lucene,代码行数:12,代码来源:CompositeKeyRoutingConvention.cs


示例17: ToStringWithOneSegment

        public void ToStringWithOneSegment()
        {
            // Arrange
            string expectedValue = "Set";
            ODataPath path = new ODataPath(new EntitySetPathSegment(expectedValue));

            // Act
            string value = path.ToString();

            // Assert
            Assert.Equal(expectedValue, value);
        }
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:12,代码来源:ODataPathTest.cs


示例18: SelectAction

		public override string SelectAction(ODataPath odataPath, HttpControllerContext controllerContext, ILookup<string, HttpActionDescriptor> actionMap)
		{
			if (odataPath == null)
			{
				throw new ArgumentNullException("odataPath");
			}
			if (controllerContext == null)
			{
				throw new ArgumentNullException("controllerContext");
			}
			if (actionMap == null)
			{
				throw new ArgumentNullException("actionMap");
			}

			IEdmNavigationProperty navigationProperty = GetNavigationProperty(odataPath);
			IEdmEntityType declaringType = navigationProperty == null ? null : navigationProperty.DeclaringType as IEdmEntityType;

			if (declaringType != null)
			{
				HttpMethod httpMethod = controllerContext.Request.Method;
				string actionName = null;

				if (IsNavigationPropertyValuePath(odataPath))
				{
					if (httpMethod == HttpMethod.Get)
					{
						actionName = actionMap.FindMatchingAction("Get" + navigationProperty.Name, GetNavigationPropertyMethodName);
					}
					else if (httpMethod == HttpMethod.Post)
					{
						actionName = actionMap.FindMatchingAction("Post" + navigationProperty.Name, PostNavigationPropertyMethodName);
					}
				}
				// Navigation property links are already handled by LinksRoutingConvention
				// else if (IsNavigationPropertyLinkPath(odataPath)) {}

				if (actionName != null)
				{
					KeyValuePathSegment keyValueSegment = odataPath.Segments[1] as KeyValuePathSegment;
					if (keyValueSegment != null)
					{
						controllerContext.RouteData.Values[ODataRouteConstants.Key] = keyValueSegment.Value;
					}

					controllerContext.RouteData.Values[ODataRouteConstants.NavigationProperty] = navigationProperty.Name;

					return actionName;
				}
			}
			return null;
		}
开发者ID:mdabbagh88,项目名称:ODataServer,代码行数:52,代码来源:GenericNavigationPropertyRoutingConvention.cs


示例19: ToStringWithKeyValueSegment

        public void ToStringWithKeyValueSegment()
        {
            // Arrange
            string segment = "1";
            ODataPath path = new ODataPath(new KeyValuePathSegment(segment));

            // Act
            string value = path.ToString();

            // Assert
            string expectedValue = "(" + segment + ")";
            Assert.Equal(expectedValue, value);
        }
开发者ID:ZhaoYngTest01,项目名称:WebApi,代码行数:13,代码来源:ODataPathTest.cs


示例20: SelectController

		/// <summary>
		/// Selects the controller for OData requests.
		/// </summary>
		/// <param name="odataPath">The OData path.</param>
		/// <param name="request">The request.</param>
		/// <returns>
		///   <c>null</c> if the request isn't handled by this convention; otherwise, the name of the selected controller
		/// </returns>
		public string SelectController(ODataPath odataPath, HttpRequestMessage request)
		{
			//Contract.Requires<ArgumentNullException>(odataPath != null);
			//Contract.Requires<ArgumentNullException>(request != null);

			if (odataPath.PathTemplate == "~" ||
			    odataPath.PathTemplate == "~/$metadata")
			{
				return "EntityRepositoryMetadata";
			}

			return null;
		}
开发者ID:mdabbagh88,项目名称:ODataServer,代码行数:21,代码来源:EntityRepositoryMetadataRoutingConvention.cs



注:本文中的System.Web.Http.OData.Routing.ODataPath类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# Routing.HttpRouteData类代码示例发布时间:2022-05-26
下一篇:
C# Query.ODataQueryOptions类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap