将对象列表POST到MVC 5 Controller

时间:2015-07-09 08:09:27

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

我想将一个对象列表发布到MVC 5控制器,但只有NULL到达Controller方法。这个POST:

$.ajax({
    type: "POST",
    dataType: "json",
    contentType: "application/json",
    url: "../delikte",
    data: JSON.stringify({ "delikte" : delikte})
});

转到这个MVC 5控制器:

[HttpPost]
[Route(@"delikte")]
public void saveDelikte(List<Delikt> delikte)
{
  ... // delikte is null 
}

正如我从IE调试工具中看到的那样,POST包含以下数据:

{"delikte":[{"VerfahrenId":"6","DeliktId":"4123"},{"VerfahrenId":"6","DeliktId":"4121"}]} 

并且应该转换为此对象的列表:

public class Delikt
{
    public int VerfahrenId { get; set; }
    public int DeliktId { get; set; }
}

我认为从Delft类中将VerfahrenId和DeliktId定义为int可能会出现问题,但更改为字符串并未改变问题。

我已阅读其他主题但我找不到解决方案(我的帖子包含dataType,contentType,发布的信息似乎格式正确)。我的错误在哪里?

1 个答案:

答案 0 :(得分:3)

我会尝试从POST数据中删除属性名称:

$.ajax({
    type: "POST",
    dataType: "json",
    contentType: "application/json",
    url: "../delikte",
    data: JSON.stringify(delikte)
});

也可以帮助明确指定值来自POST正文:

[HttpPost]
[Route(@"delikte")]
public void saveDelikte([FromBody]List<Delikt> delikte)
{
    ... // delikte is null 
}