我有以下控制器方法签名:
public void DiscoveryMailboxAnnotate(string note, List<string> ids)
我正在尝试将以下javascript对象发布到此方法:
var data = {
note: 'note',
ids: ['1','2']
};
$.ajax({
type: "POST",
url: '/Supervise/DiscoveryMailboxAnnotate',
data: data,
error: function (xhr, status, error) {
},
success: function (response) {
}
});
我的控制器方法中的注意参数已填充,但 List<string>
id 参数未填充。我做错了什么?
答案 0 :(得分:1)
认为你有一个模型绑定问题,尝试更改为
List<int>
你的方法签名,并认为你会发现它有用。
编辑: 但这是一个模型招标问题。默认情况下,属性是私有的,因此请更改您的视图模型,使其公开:
public class DiscoveryMailboxAnnotateViewModel
{
public string Note { get; set; }
public List<string> Ids { get; set; }
}
然后修复你的控制器:
[HttpPost]
public void DiscoveryMailboxAnnotate(DiscoveryMailboxAnnotateViewModel model)
{
if (!ModelState.IsValid)
{
}
}
然后是JQuery
<script>
var model = {
Note: 'note',
Ids: ['11', '20', '30']
};
$.ajax({
type: "POST",
url: '/Home/DiscoveryMailboxAnnotate',
data: JSON.stringify(model),
dataType: 'json',
contentType: 'application/json',
error: function (xhr, status, error) {
},
success: function (response) {
}
});
本文将解释更多,绑定一个List并没有完全按照我的预期工作:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/