MVC Data v4中delta <tentity>的json格式是什么?</tentity>

时间:2015-03-08 03:20:39

标签: asp.net-mvc odata asp.net-web-api2

我有一个控制器:

public class PostsController : ODataController
{
    public IHttpActionResult Post(Post post) {}
    public IHttpActionResult Put([FromODataUri] int key, Delta<Post> patch) {}
}

Post实体只有两个字段:int Idstring Content。 以下json消息在POST操作中正常工作:

{
  content: "dasdasd678678678"
}

但是,PUT操作拒绝请求并返回400错误:

{
  "error":{
    "code":"","message":"The request is invalid.","innererror":{
      "message":"The parameters dictionary contains an invalid entry for parameter 'patch' for method 'System.Web.Http.IHttpActionResult Put(Int32, System.Web.OData.Delta`1[Post])' in 'NWeb.Controllers.API.PostsController'. The dictionary contains a value of type 'Entity.Post', but the parameter requires a value of type 'System.Web.OData.Delta`1[Entity.Post]'.","type":"","stacktrace":""
    }
  }
}

1 个答案:

答案 0 :(得分:1)

PUT操作应如下所示 public IHttpActionResult Put([FromODataUri] int key, Post post) {}

delta<Entity>应该像这样使用PATCH public IHttpActionResult Patch([FromODataUri] int key, Delta<Post> post)

PUT和PATCH都用于更新实体,但PUT需要更新实体的完整有效载荷,而PATCH只需要增量信息。