我有 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
看起来像这样:
SomeId
被正确绑定,但Codes
仍然为空。发生了什么事?
答案 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) {
....
}
});