2016-11-01 15 views
0

このOData関数は、ボディからモデルパラメータを逆シリアル化しません。レスポンスから見れば、それはnullとして逆シリアル化されます。 OData V4のFromBodyパラメータのサポートはありますか?OData V4関数FromBodyパラメータ

ConfigV1.cs

builder.Function("CreateTestModel").Returns<TestModel>(); 
var edmModel = builder.GetEdmModel() 
config.MapODataServiceRoute("ODataRouteV1", "v1", edmModel); 

TestController.cs

using System; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http; 
using System.Web.OData; 
using System.Web.OData.Query; 
using System.Web.OData.Routing; 

public class TestController : ODataController 
    [HttpPost] 
    [ODataRoute("CreateTestModel")] 
    public TestModel CreateTestModel([FromBody]TestModel model) 
    { 
     return model; 
    } 
} 

TestModel.cs

public class TestModel 
{ 
    public string Value { get; set; } 
} 

要求

POST /v1/CreateTestModel HTTP/1.1 
Host: localhost:8090 
Content-Type: application/json 
Cache-Control: no-cache 
Postman-Token: 4810cdc0-d92b-b7b5-4328-8b87e0222854 

{ 
    "Value": "test" 
} 
V4では

応答

{ 
    "@odata.context":"http://localhost:8090/V1/$metadata#Edm.Null","@odata.null":true 
} 

答えて

1

ODataの機能は、HTTP GETで呼び出されなければなりませんし、サーバーに影響を与えるべきではありません。あなたのメソッドはここにCreateTestModelのように聞こえるので、サーバーに影響を与えるので、おそらくODataアクションに適していると言えます。これは関連性がないように思えるかもしれませんが、実際にはアクションがセットアップされているため、実際には問題が解決されると思います。機能は通常、URLからパラメータを取得しますが、

関連する問題