2017-04-04 11 views
0

を文字列の配列を投稿することはできませんこの:は、私は<strong>MVC3</strong>コントローラのアクションを持っているASP.NET MVC3に

var postData = { 
    SomeId: 1, 
    Codes: ["code1", "code2", "code3"] 
}; 

$.post(url, postData, function (data) {}); 

URLは正しいです。私はそれをログインしたときpostDataは次のようになります。

enter image description here

SomeIdが正しく結合したが、CodesはNULLのままされます。何が起こっている?

+0

です。あなたのモデルはコードと呼ばれる配列を期待していますが、dev-toolsではjavascriptオブジェクトに配列名がPiCodesであることが示されています。それが役立つかどうか確認できますか? – MarioMucalo

+0

ちょうど推測ですが、あなたは 'public string [] Codes {get;セット; } ' –

+0

私のところではスクリーンショットが正しくありません、ごめんなさい。名前は対応しています。 – ohyeah

答えて

1

$.ajax()メソッドを使用し、正しいajaxオプションを設定し、データを文字列化する必要があります。例えば

var postData = { SomeId: 1, 'Codes[0]': 'code1', 'Codes[1]': 'code2', 'Codes[2]': 'code3'}; 

コードを含むあなたの現在のオブジェクトを使用して -

$.post()方法は、あなたがそれをバインドするDefaultModelBinderためにインデクサでコレクションを生成する必要がありますを意味し、application/x-www-form-urlencoded; charset=UTF-8としてデータを送信しています配列は

$.ajax({ 
    url: url, 
    type: 'post', 
    contentType: 'application/json', 
    data: JSON.stringify({ model: postData }) 
    success: function(data) { 
     .... 
    } 
}); 
+0

助けてくれてありがとう!しかし、 '[0] .Codes'は正しい構文ではないようです。私のIntellisenseは少なくともそれについて不平を言っているようだ。 – ohyeah

+0

引用符を忘れてしまいました(この場合、コード[0] 'を使用することもできます)。 –

+0

JSONを送信しているので、 'Codes [0]'を使う必要はありません。 –

関連する問題