我有一个mvc动作,它采用以下参数
public ActionResult SetParameters(IEnumerable<KeyValue> parameters)
{
}
KeyValue声明为:
public class KeyValue
{
public string key { get; set; }
public string value { get; set; }
}
Firebug显示此帖子变量已发送:
parameters[0][key] foo
parameters[0][value] bar
为什么我没有获得KeyValue的填充成员,key和value都为null。 但参数的数量是正确的。
答案 0 :(得分:1)
向Action发送对象列表的唯一魔力是如何设置intup的名称。 ASP.NET MVC ModelBinder
不理解parameters[0][key]
之类的表达式。
它只能理解parameters[0].key
,但在ajax提交中,嵌套对象将以parameters[0][key]
格式发送。
var parameters = [
{ key: '1', value: 'foo' },
{ key: '2', color: 'baz' },
{ key: '3', color: 'bar' }
];
parameters = JSON.stringify({ 'parameters': parameters});
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: 'url',
data: parameters,
success: function () {
},
failure: function (response) {
}
});