无法将字符串数组POST到ASP.NET MVC3

时间:2017-04-04 09:27:06

标签: jquery asp.net asp.net-mvc asp.net-mvc-3

我有 MVC3 控制器操作:

public ActionResult DoStuff(DoStuffModel model)

DoStuffModel看起来像这样:

public class DoStuffModel
{
    public long SomeId { get; set; }
    public List<string> Codes { get; set; }
}

在我的jQuery中,我这样做:

 var postData = {
     SomeId: 1,
     Codes: ["code1", "code2", "code3"]
 };

$.post(url, postData, function (data) {});

网址是正确的。我记录时postData看起来像这样:

enter image description here

SomeId被正确绑定,但Codes仍然为空。发生了什么事?

1 个答案:

答案 0 :(得分:1)

您需要使用$.ajax()方法并设置正确的ajax选项并对数据进行字符串化。

$.post()方法将数据发送为application/x-www-form-urlencoded; charset=UTF-8,这意味着您需要使用索引器生成集合,以便DefaultModelBinder绑定它 - 例如

var postData = { SomeId: 1, 'Codes[0]': 'code1', 'Codes[1]': 'code2', 'Codes[2]': 'code3'};

使用包含数组的当前对象的代码将是

$.ajax({
    url: url,
    type: 'post',
    contentType: 'application/json',
    data: JSON.stringify({ model: postData })
    success: function(data) {
        ....
    }
});