将帖子与oData结合使用

时间:2019-02-19 14:04:14

标签: c# asp.net-web-api odata

我有一个正在使用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");

我在自定义功能控制器中放了一个刹车点,但我一点都没碰到

2 个答案:

答案 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