【发布时间】:2023-03-27 03:33:02
【问题描述】:
对于 WebAPI 2 OData 解决方案,我们需要能够映射以下路由类型:
~/odata/1234erp/Products 表示控制器(或实体集)段的值前缀。我的路线设置如下:
config.Routes.MapODataRoute(
routeName: "odata",
routePrefix: "odata/{tableid}/{controller}",
model: ModelBuilder.GetEdmModel(),
pathHandler: new DefaultODataPathHandler(),
routingConventions: conventions);
这使得我的 CustomControllerRoutingConvention 中的 SelectAction 方法被命中(SelectController 没有被命中)但是 odataPath 参数计算 0 个段,我希望它能够识别类似 ~/tableid/entityset/ em>
现在我可能可以使用类似的方法解决这个问题
controllerContext.RequestContext.RouteData.Values["tableid"]
但是有更好的(类型安全的?)解决方案吗?
编辑:
此外,由于 ODataPath path = Request.GetODataPath() 返回 0 个段,因此不再可能派生 ODataQueryOptions 所需的 EdmType...
【问题讨论】:
标签: asp.net-web-api odata