【发布时间】:2016-09-22 07:47:50
【问题描述】:
基于 ODataSamples-master odata 示例中的 DynamicEdmModelCreation 项目并遵循问题中收到的帮助 Handle Odata /entityset/key/navigation 我们现在需要公开带有参数的动态动作和函数。为了支持未绑定的函数,我们在 GetModel 函数中做了如下:
var GetSum = new EdmFunction("ns", "GetSum",
new EdmPrimitiveTypeReference(EdmCoreModel.Instance.GetPrimitiveType(EdmPrimitiveTypeKind.Double), false),
false, null, true);
GetSum.AddParameter("param1",
new EdmPrimitiveTypeReference(EdmCoreModel.Instance.GetPrimitiveType(EdmPrimitiveTypeKind.Double),
false));
GetSum.AddParameter("param2",
new EdmPrimitiveTypeReference(EdmCoreModel.Instance.GetPrimitiveType(EdmPrimitiveTypeKind.Double),
false));
model.AddElement(GetSum);
container.AddFunctionImport(GetSum);
在 SelectAction 方法中我们放了:
if (odataPath.Segments.Count > 0 &&
odataPath.Segments.Last() is UnboundFunctionPathSegment &&
odataPath.Segments.Last().ToString().Contains("GetSum"))
return "ExecuteFunction";
控制器终于有了
[HttpGet]
[HttpPost]
public IHttpActionResult ExecuteFunction(ODataActionParameters parameters)
{
...
}
现在测试服务:
http://localhost:2900/odata/GetSum(param1=1,param2=2)
除参数外,一切正常,它们始终输入为空。我们缺少什么来支持这些参数吗?
【问题讨论】:
标签: c# asp.net-web-api odata odata-v4