HttpPost的接收属性中只有null值,使用IEnumerable参数的操作发布数组

时间:2014-11-16 11:39:39

标签: asp.net-mvc

我有一个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。 但参数的数量是正确的。

1 个答案:

答案 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) {          
        }
    });