【问题标题】:ASP.NET Web API OData (v4) POST on Entity with SPATIAL PROPERTY具有空间属性的实体上的 ASP.NET Web API OData (v4) POST
【发布时间】:2017-05-30 05:44:04
【问题描述】:

在 ASP.NET Web API OData (v4) 上发布具有空间属性的实体的正确方法是什么?

GET 上的序列化工作正常,但我在 POST 中尝试的所有操作都会导致模型变为空。

是否支持 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);
    }
}

【问题讨论】:

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


    【解决方案1】:

    阅读下面提到的文章后,这似乎是可能的。您将需要使用 oDataActionParameters 类型作为帖子的输入,然后在您的方法中将其转换为所需的类型。 Mehtod 签名将如下所示:

    public async Task<IHttpActionResult> RateProduct(ODataActionParameters parameters)
    

    查看此link 以获取示例并深入了解此

    【讨论】:

    • 谢谢。使用操作时,绑定确实适用于空间类型,并且空间类型是“第一级”参数。如果动作的参数是 Place 并且空间类型是 Place 的属性,则它不起作用。这种行为的解释是什么?序列化工作正常,反序列化则不行。你提到的那篇文章没有直接涉及到。
    猜你喜欢
    • 1970-01-01
    • 2013-04-19
    • 2017-11-06
    • 2013-01-07
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多