2016-07-26 12 views
1

常にnullのbodyパラメータに問題があります。 ここで、コントローラの:WEB API - FromBodyパラメータが機能していません

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

URIパラメータが記入されています。ただし、Bodyパラメーターは常に空です。ここで私は自分のネットワークモニタ内にペイロードに見るものだ

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

はここでAJAXリクエストです。

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

ここで問題が発生する可能性がありますか?

編集:私はAPIコントローラ

+0

は' [FromBody] INT [] ids'仕事をしていますか? – Win

+0

@Winいいえ、uriパラメータがなくても動作しません。 – Machinegon

+0

リクエストを表示できますか? – Marusyk

答えて

0

私は単純なタイプを使用しました。何も働かなかったし、私はこれで多くの時間を無駄にした。

私はこの1つとして、同様のソリューションを試してみました:http://blog.codenamed.nl/2015/05/12/why-your-frombody-parameter-is-always-null/

をしかし、それは配列では動作しない問題を回避するには、私は複合型を作成し、私の2を封入して、アレイは、だから、0 の唯一の1の値を持っていましたその中のパラメータ。あなたがアクションメソッドから `[FromUri] [] int型sectionIds`を削除する場合

// 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が正しい場所にいないようです。 content typeで次を試してみませんか?

$.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

関連する問題