2016-10-03 12 views
0

jQuery Ajaxを使用して整数配列を渡そうとしていますが、コントローラがデータを受け取っていないようです。JSONデータをMVCコントローラのプロパティに配列(モデルバインディング)として渡します。

jQueryのAJAX呼び出し:

var box = {MECallButtons: R_MainEntranceButtons } 

$.ajax({ 
    type: "POST", 
    url: "/Home/CollectJson/", 
    contentType:"application/json", 
    data: JSON.stringify(box), 
    success: function (data) { 
     alert(data); 
    } 
}); 

データモデル:

Public Class MyParamModel 
    Private f_MECallButtons(100) As Integer 
    Public Property MECallButtons(ByVal Index As Integer) As Integer 
     Get 
      Return f_MECallButtons(Index) 
     End Get 
     Set(ByVal value As Integer) 
      f_MECallButtons(Index) = value 
     End Set 
    End Property 
End Class 

コントローラー:

Function CollectJson(ByVal test As MyParamModel) As JsonResult 
    Return Json("12345") 
End Function 

Mozillaのコンソール(送信されたJSONデータ):

{"MECallButtons":[4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 
,0,0,0,0,0,0,0,0,0]} 

ビジュアルスタジオでは、プロパティ配列のすべての要素は0です。私は最初の2要素4 & 1を受け取っていないようです。

ご協力いただければ幸いです。

おかげ

+0

にコントローラのパラメータ名を設定しますが、機能CollectJson' 'でブレークポイントを入れて、あなたのテストの変数を検査あれば......、あなたはすべてのゼロを取得しますか?もしそうでなければ、クラス定義は有罪だと思います! – Hackerman

+0

はいブレークポイントを設定するときにすべてゼロを設定します –

+0

コントローラに渡す前にデータをストリング化する必要はありません。代わりに 'data:box'を試してみてください。 – lucasnadalutti

答えて

0

文字列化を削除し、投稿するオブジェクトが動作するはず割り当てます。

var box = {MECallButtons: R_MainEntranceButtons } 

$.ajax({ 
    type: "POST", 
    url: "/Home/CollectJson/", 
    contentType:"application/json", 
    data: {model: box}, 
    success: function (data) { 
     alert(data); 
    } 
}); 

はその後

Function CollectJson(ByVal model As MyParamModel) As JsonResult 
    Return Json("12345") 
End Function 
関連する問題