2016-07-26 45 views
1

我遇到了一個問題,我的身體參數始終爲空。 這是控制器:WEB API - FromBody參數不起作用

[HttpPost] 
    public async void Assign([FromUri] int[] sectionIds, [FromBody] int[] ids) ... 

URI參數被填寫。但是,Body參數始終爲空。

這裏的Ajax請求:

return $.ajax(
     { 
      url: api_url, 
      type: 'POST', 
      contentType: 'application/json', 
      data: JSON.stringify({ 
       "ids": ids 
      }) 
     }) 

下面是我在有效載荷看到在我的網絡監控。

{"ids":[597,1893]}: 

這可能是什麼問題?

編輯:我使用的是API控制器

+0

是否'[FromBody] INT [] ids'工作,如果你刪除'[FromUri] INT []從操作方法sectionIds'? – Win

+0

@Win不,即使沒有uri參數,它也不起作用。 – Machinegon

+0

你能告訴我們這個要求嗎? – Marusyk

回答

0

我放棄了使用簡單的類型。沒有任何工作,我浪費了很多時間在這個。

我嘗試了類似的解決方案,因爲這一個:http://blog.codenamed.nl/2015/05/12/why-your-frombody-parameter-is-always-null/

但它不使用數組,數組只有1個值爲0 所以,作爲一種解決方法我創建了一個複雜的類型和封裝的我2參數。

// Controller code 
[HttpPost] 
public async void Assign([FromBody] AssignModel) ... 

客戶端代碼

// Client code 
    return $.ajax(
     { 
      url: api_url, 
      type: 'POST', 
      contentType: 'application/json', 
      data: JSON.stringify({ 
       "Ids": ids, 
       "SectionIds": sectionIds 
       }) 
     }) 
3

看來,URL是不正確的位置。你可以用contentType來試試以下內容嗎?

$.ajax({ 
    url: API_URL, 
    contentType: "application/json", 
    method: "POST", 
    data: JSON.stringify({"ids": ids}, 
    success: function(result) { return result; } 
}); 
+0

我嘗試了你的改變,同樣的問題在這裏。 ids數組仍然爲空 – Machinegon

+0

您可以嘗試發送字符串值而不是陣列僅用於測試嗎? – Win

+0

請參閱下面的答案。一個字符串值確實工作,但數組沒有。 – Machinegon