Asp.net web api 修补程序的增量为空

Asp.net web api 修补程序的增量为空,asp.net-web-api,Asp.net Web Api,这里是我的实体。我首先使用实体框架代码 public class Trade { public Guid Id { get; set; } [MaxLength(10)] public string AssetClass { get; set; } public TradeBatch Batch { get; set; } } public class TradeBatch { publi

这里是我的实体。我首先使用实体框架代码

public class Trade
    {

        public Guid Id { get; set; }
        [MaxLength(10)]
        public string AssetClass { get; set; }
        public TradeBatch Batch { get; set; }
    }

public class TradeBatch
    {
        public TradeBatch()
        {
            StartedOn = DateTime.Now;

        }

        public Guid Id { get; set; }

        public DateTime StartedOn { get; set; }


        public List<Trade> Trades { get; set; }
    }

修补程序操作中的“更新”值始终为空。有什么原因吗?

您的JSON很好,据我所知,该方法应该接受它。通过在
补丁
方法的顶部添加以下代码行,您可以看到确切的错误:

如果(!ModelState.IsValid){
抛出新的HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest,ModelState));
}

这样,如果JSON根据方法所期望的模型无效,它将返回一条
HTTP400错误请求
消息以及ModelState。该响应的消息将包含ModelState无效的原因。

您可能希望尝试将content-type头设置为
application/json;odata=冗长


我可能只是发表了评论,但还没有名声。

今天我只是花了几个令人沮丧的小时来讨论这个问题,在我的例子中,问题是我的模型类没有无参数构造函数。我不确定你是否有类似的问题,但希望这能在将来为别人节省一些时间。
[AcceptVerbs("PATCH")]
public void UpdateTrade(Guid id, Delta<Trade> update)
{
    var tradeToUpdate = _repTradeService.GetRepTradeById(id);
    update.Patch(tradeToUpdate);
    _repTradeService.SaveChanges();
 }
PATCH http://localhost:61579/api/RepTrades/4e43b48a-a4fd-4ffc-841d-08dac55deb60 HTTP/1.0
User-Agent: Fiddler
Host: localhost:61579
Content-Length: 55

Content-Type: application/json
{"AssetClass":"Test"}