0
ASP.NET Web API OData(v4)でSPATIAL PROPERTYを使用してエンティティをPOSTする正しい方法は何ですか?ASP.NET Web API OData(v4)SPATIAL PROPERTYを使用したエンティティでのPOST
GETでのシリアル化はうまく動作しますが、POSTで試行したすべてがモデルをnullにします。
POSTはまったくサポートされていますか?
ありがとうございます。
public class PlacesController : ODataController
{
[HttpGet]
[EnableQuery]
public virtual async Task<IHttpActionResult> Get([FromODataUri] string key)
{
var place = new Place()
{
Id = Guid.NewGuid().ToString(),
Location = GeographyPoint.Create(1, 1)
};
return Ok(place);
}
[HttpPost]
[EnableQuery]
public virtual async Task<IHttpActionResult> Post(Place place)
{
if (place == null)
{
return BadRequest();
}
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Created(place);
}
}
[DataContract]
public class Place
{
[DataMember]
public string Id
{
get;
set;
}
[DataMember]
public GeographyPoint Location
{
get;
set;
}
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
var edmBuilder = new ODataConventionModelBuilder();
edmBuilder.EntitySet<Place>("Places");
var model = edmBuilder.GetEdmModel();
config.MapODataServiceRoute(routeName: "ODataRoute", routePrefix: "api", model: model);
}
}
おかげで深いダイビングのチェックこのlinkを:Mehtod署名は、以下のようなものでしょう。バインディングは、アクションを使用する場合は空間タイプで機能し、空間タイプは「第1レベル」パラメータです。アクションのパラメータがPlaceで、空間タイプがPlaceのプロパティであった場合、動作しません。その行動の説明は何ですか?シリアライゼーションは正常に動作し、デシリアライゼーションは機能しません。あなたが言及した記事はそれを直接扱っていません。 –