不能 POST 字符串数组到 ASP.NET MVC3

Can't POST an array of string to ASP.NET MVC3

我有一个 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) {});

URL 是正确的。 postData 在我登录时看起来像这样:

SomeId 已正确绑定,但 Codes 仍为空。怎么回事?

您需要使用 $.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) {
        ....
    }
});