14

public ActionResult DoSomething(string[] arr, bool someBool, int someInt) { }

jQueryから上記のメソッドを呼び出そうとしています:

var test = [];
test.push('dog');
test.push('cat');

$container.load('MyController/DoSomething',
                { 'arr[]': test, 'someBool': true, 'someInt': 1 },
                function(response, status, xhr) {
                    // ...
                });

配列パラメーターは null です。他のパラメーターは問題ありません。私は何を間違っていますか?

Chrome デベロッパー ツールは、送信されたフォーム データを次のように表示します。

arr%5B%5D%5B%5D:dog
arr%5B%5D%5B%5D:cat
someBool:true
someInt:1

そこで何が起こっているのかわかりませんが、私には正しく見えません

4

4 に答える 4

29

jquery 1.4 を使用している場合は、ASP.NET MVC の既定のモデル バインダー形式と互換性を持たせるために、traditionalパラメーターをに設定する必要がある場合があります。true

var test = [];
test.push('dog');
test.push('cat');

$.ajax({
    url: 'MyController/DoSomething',
    type: 'GET',
    traditional: true,
    data: { arr: test, someBool: true, someInt: 1 },
    success: function(result) {
        $container.html(result);
    }
});

または、次の方法を好む場合.load():

var data = { arr: test, someBool: true, someInt: 1 };
$container.load('MyController/DoSomething', $.param(data, true), 
    function(response, status, xhr) {
    // ...
});
于 2010-10-15T13:19:57.473 に答える
1

取り除くだけ[]

{ 'arr': test, 'someBool': true, 'someInt': 1 },

投稿された値 (Firebug で確認)。

arr[]       dog
arr[]       cat
someBool    true
someInt     1
于 2010-10-15T13:12:12.193 に答える
0

この問題があなたの問題に似ているかどうかわかりますか:

jQuery の $.ajax を使用してネストされた配列を asp.net mvc に渡す

于 2010-10-15T13:14:20.987 に答える
0

HTMLページからaspxページに配列を渡すときに、私もエラーに直面していました。

私の要件は、html ページの DIV タグに aspx ページをロードすることでした。ページの読み込み時に、これらの JS 配列の値を aspx ページの読み込みに渡す必要があります。

以下の方法を使用しました。

$('#<divTagID>').load("Targetpage.aspx",{"Arr":JSArrValues});

aspx ページ読み込みイベントでは、次のようにこの値にアクセスできます。

string results = Response["Arr[]"];

JQuery API ドキュメントのおかげで、ここにリンクの説明を入力し、stackoverflow

于 2014-07-11T05:28:34.000 に答える