2016-04-14 53 views
2

我有一個非常簡單的方法後:POST核心Web核心WebAPI奇怪的正文。沒有正確序列化?

[HttpPost] 
     public IActionResult Post(AgreementType model) 
     { 
      var ag = _facade.AddOrUpdateAgreement(model); 
      return Json(ag); 
     } 

,並試圖發送一些測試呼叫反對它,看它是否是通過正常的到來。不是這樣。我已經檢查了瀏覽器中的網絡選項卡以及提琴手,並且請求對我來說絕對看起來不錯。 (內容類型是應用程序/ JSON和身體就好了)。

我在服務器端post方法中放置了一個斷點,它正在進入該方法,並且模型的結構正常,只是所有的字符串都爲空並且數組爲空。

感覺就像一個序列化的問題,看起來像我剛開始一個空的(新)AgreementType模型,而不是一個上來的......

編輯:這裏是JSON和C#型號:

JSON:

{ 
    "QuestionCategories": [1], 
    "Id": 1, 
    "Name": "Name", 
    "ShortName": "Short Name" 
} 

型號:

namespace DTModels.Models 
{ 
    public class AgreementType 
    { 
     public virtual ICollection<QuestionCategory> QuestionCategories { get; set; } 

     public AgreementType() 
     { 
      QuestionCategories = new HashSet<QuestionCategory>(); 
     } 

     public int Id { get; set; } 
     public string Name { get; set; } 
     public string ShortName { get; set; } 
    } 
} 
+0

將'[FromBody]'屬性添加到您的參數中,並查看數據是否被您的參數接受。 –

+1

向我們展示模型和JSON。事實上,我們沒有足夠的信息來猜測問題出在哪裏。 – Amy

+0

@KennethK。我嘗試過,然後模型只是null。 – pQuestions123

回答

2

在你的c#對象中QuestionCategories是QuestionCategory的集合,但是在你的json中你正在發送一個int集合。那不會映射。 YourJson必須像

{ 
    "QuestionCategories": [ 
          {"prop1" : "value", 
          "prop2": "value"}, 
          {"prop1": "value", 
          "prop2": "value"} 
         ], 
    "Id": 1, 
    "Name": "Name", 
    "ShortName": "Short Name" 
} 

凡PROP1和PROP2是QuestionCategory的性質和我的例子就是傳遞2個對象的收藏。你也需要將頭文件中的內容類型設置爲application/json。

+0

謝謝是的,它看起來是你的答案和我的答案的組合。 – pQuestions123

0

想通了出。確保您的內容長度已設置!