我有一个像这样的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?我如何通过数组索引名称将这些数据存入我的索引操作?
请给我一个很好的例子,我是MVC3的新手。
抱歉我的英语不好。
答案 0 :(得分:2)
我有一个像这样的javascript数组:
不,你没有阵列。 javascript中的数组必须具有基于零的整数索引。你拥有的是一个javascript对象。
所以有两种情况:
让我们首先介绍对象场景。所以你有一个对象:
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) {
....
}
});
第二种情况,有数组:
[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) {
....
}
});