0

次のようなJavaScript配列があります。

var optionArray = new Array();
optionArray["totalBankAmount"] = $("#totalBankAmountID").val();
optionArray["singlePlayerAmount"] = $("#singlePlayerAmountID").val();
..... (more array data)

この配列を次のように StartOption (MVC3 コントローラー) に送信しています。

$.ajax({
        url: "/StartOption/Index/",
        data: { allOptions: JSON.stringify(optionArray) },
        cache: false,
        type: "POST",
        timeout: 10000,
        dataType: "json",
        success: function (result) {
            ....
        }
});

Index Action はどのようにその optionArray をキャッチしますか? 配列インデックス名でこれらのデータを Index アクションに取得する方法を教えてください。

良い例を教えてください。私は MVC3 が初めてです。

私の悪い英語で申し訳ありません。

4

1 に答える 1

2

次のようなJavaScript配列があります。

いいえ、配列はありません。JavaScript の配列には、ゼロベースの整数インデックスが必要です。あなたが持っているのはjavascriptオブジェクトです。

したがって、2 つのシナリオがあります。

  • オブジェクトを操作したい
  • 配列を操作したい

最初にオブジェクトのシナリオについて説明しましょう。だからあなたはオブジェクトを持っています:

public class Foo
{
    public string Bar { get; set; }
    public string Baz { get; set; }
}

そして、それをコントローラー アクションに渡します。

[HttpPost]
public ActionResult Index(Foo foo)
{
    ...
}

呼び出しコードは次のようになります。

var foo = {};
foo['bar'] = 'some bar';
foo['baz'] = 'some baz';

// or the equivalent:
// var foo = {};
// foo.bar = 'some bar';
// foo.baz = 'some baz';

// or the equivalent:
// var foo = { bar: 'some bar', baz: 'some baz' };

$.ajax({
    url: '@Url.Action("index", "startoption")',
    contentType: 'application/json',
    data: JSON.stringify({ foo: foo }),
    type: 'POST',
    timeout: 10000,
    success: function (result) {
        ....
    }
});

そして、配列を使用した 2 番目のケース:

[HttpPost]
public ActionResult Index(Foo[] foos)
{
    ...
}

および呼び出しコード:

var foos = [];

var foo1 = {};
foo1['bar'] = 'some bar 1';
foo1['baz'] = 'some baz 1';
foos.push(foo1);

var foo2 = {};
foo2['bar'] = 'some bar 2';
foo2['baz'] = 'some baz 2';
foos.push(foo2);

// or the equivalent:
// var foos = [ { bar: 'some bar 1', baz: 'some baz 1' }, 
//              { bar: 'some bar 2', baz: 'some baz 2' } ];

$.ajax({
    url: '@Url.Action("index", "startoption")',
    contentType: 'application/json',
    data: JSON.stringify({ foos: foos }),
    type: 'POST',
    timeout: 10000,
    success: function (result) {
        ....
    }
});
于 2012-06-30T08:06:05.117 に答える