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"}