【问题标题】:How to Bind Delta<T> in web api2 odata 3 controller如何在 web api2 odata 3 控制器中绑定 Delta<T>
【发布时间】:2017-10-02 00:44:21
【问题描述】:

所以我正在构建新的数据服务,并认为我会使用 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' }

【问题讨论】:

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


    【解决方案1】:

    通过制作一个引用服务的控制台应用程序并观察流量来找出答案。如果其他人遇到此问题,请尝试将 odata.type: "whatever the type of your object is" 添加到请求中的 json 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多