如何在web api2 odata 3控制器中绑定Delta <t>

时间:2017-05-04 02:05:09

标签: json entity-framework asp.net-web-api2 odata model-binding

所以我正在构建新的数据服务,并认为我会使用web api odata。所以我使用脚手架为我的项目添加了一个控制器,为我的实体框架模型类生成动作。在我尝试生成的put或patch方法之前,一切都很顺利。来自url的guid Id绑定,但无论我尝试什么,我都无法绑定Delta变量。它始终为空。经过一天的谷歌搜索,我找不到比2011年更新的东西,这些解决方案不起作用。有谁知道如何让这些绑定?

方法签名

[AcceptVerbs("PATCH", "MERGE")]
 public async Task<IHttpActionResult> Patch([FromODataUri] Guid key, Delta<AttachmentProposal> patch)

我的网络API配置

public static void Register(HttpConfiguration config)
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    builder.EntitySet<AttachmentProposal>("AttachmentProposals");
    builder.EntitySet<AttachmentAction>("AttachmentActions");  
    config.Routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());
    config.MapHttpAttributeRoutes();

我的模型类似于

public Guid Id { get; set; }
public string name { get; set; }
public DateTime createDate { get;set; }
public virtual HashSet<AttachmentActions> {get; set;} 

如果它有任何区别我总是试图发送json。典型的请求正文我试过就像

{ name: 'some name' }

{ every: 'value', single: 'value', property: 'value', on: 'value', my: 'value' model: 'value' }

1 个答案:

答案 0 :(得分:0)

通过制作一个控制台应用程序来引用答案,并引用该服务并观察流量。如果有其他人遇到这个问题,请尝试添加odata.type:&#34;你的对象的类型是什么&#34;到请求中的json