我有一个正在使用oData的应用程序。到目前为止,我一直只使用http get请求。我也想开始使用http发布请求。我在Web API中获得以下代码: 在WebAoucConfig中,我有:
var queryPostAction = builder.Function("QueryPostAction");
queryPostAction.ReturnsCollection<Test>();
queryPostAction.Parameter<string>("Query");
在自定义功能控制器中,我有:
[HttpPost]
[ODataRoute("QueryPostAction")]
public IHttpActionResult QueryPostAction(string Query)
{
List<Test> listTest = new List<Test>();
return Ok(listTest);
}
在应用程序中,我这样称呼它:
var test = DataConnection.context.QueryPostAction("test");
我在自定义功能控制器中放了一个刹车点,但我一点都没碰到
答案 0 :(得分:0)
尝试调用以下方法
var test = DataConnection.context.QueryPostAction(Query =“ test”);
答案 1 :(得分:0)
之所以不起作用,是因为只能通过GET请求调用Function
,并且只能使用POST
请求进行操作。 Functions
参数需要在URL查询中,Action
作为请求正文(JSON格式,键值)。
在有Action
个请求的情况下,您不能只在函数中放入一个参数。您可以使用ODataActionParameters
来访问参数。
请尝试以下操作:
-var queryPostAction = builder.Function("QueryPostAction");
+var queryPostAction = builder.Action("QueryPostAction");
queryPostAction.ReturnsCollection<Test>();
queryPostAction.Parameter<string>("Query");
[HttpPost]
[ODataRoute("QueryPostAction")]
-public IHttpActionResult QueryPostAction(string Query)
+public IHttpActionResult QueryPostAction(ODataActionParameters parameters)
{
List<Test> listTest = new List<Test>();
+ string query = parameters["Query"];
return Ok(listTest);
}
您可以在这里找到更多详细信息和示例:Actions and Functions in OData v4 Using ASP.NET Web API 2.2