2013-08-30 82 views
3

這是我的實體。我首先使用實體​​框架代碼。The Delta for Patch is null

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

在我的控制器,我有:

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

在修補行動「更新」的值總是空。任何指向爲什麼?

+0

我剛剛在今天扔了幾個令人沮喪的時間,在我的情況下,問題原來是我的模型類沒有無參數構造函數。我不確定你是否有類似的問題,但希望這將在未來挽回一些人。 –

回答

1

你的JSON很好,並且該方法應該儘可能地接受它。你可以看到確切的錯誤是通過添加以下代碼行你PATCH方法的頂部是什麼:

if (!ModelState.IsValid) { 
    throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); 
} 

這樣,如果你的JSON根據該方法期待,它的型號是無效的返回HTTP 400 Bad Request消息以及ModelState。該響應的消息將包含ModelState無效的原因。

3

你可能想嘗試的內容類型標題設置爲application/json;odata=verbose

我剛纔評論,但沒有信譽呢。

相關問題