POST对象的列表以MVC 5控制器 [英] POST a list of objects to MVC 5 Controller
问题描述
我要发布对象的列表,以一个MVC 5控制器,但只有空达到控制方法。这个帖子:
$。阿贾克斯({
键入:POST,
数据类型:JSON
的contentType:应用/ JSON
网址:../delikte
数据:JSON.stringify({delikte:delikte})
});
进入该MVC 5控制器:
[HttpPost]
[路线(@delikte)]
公共无效saveDelikte(列表< Delikt> delikte)
{
... // delikte为null
}
我可以从IE浏览器调试工具看到的,POST包含以下数据:
<$p$p><$c$c>{\"delikte\":[{\"VerfahrenId\":\"6\",\"DeliktId\":\"4123\"},{\"VerfahrenId\":\"6\",\"DeliktId\":\"4121\"}]}和应转换到这个对象的列表:
公共类Delikt
{
公众诠释VerfahrenId {搞定;组; }
公众诠释DeliktId {搞定;组; }
}
我想这可能是从VerfahrenId和DeliktId的定义在类Delikt int类型的问题,但改变串并没有改变的问题。
我已阅读其他线程,但我无法找到一个解决办法有(我的职务包括数据类型的contentType,张贴的信息在正确的格式看起来是)。哪里是我的错?
我会尝试从POST数据删除属性名称:
$。阿贾克斯({
键入:POST,
数据类型:JSON
的contentType:应用/ JSON
网址:../delikte
数据:JSON.stringify(delikte)
});
这也可能有助于明确指定的值来自POST正文:
[HttpPost]
[路线(@delikte)]
公共无效saveDelikte([FromBody]列表&LT; Delikt&GT; delikte)
{
... // delikte为null
}
I would like to post a list of objects to an MVC 5 Controller but only NULL reaches the Controller method. This POST:
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json",
url: "../delikte",
data: JSON.stringify({ "delikte" : delikte})
});
goes to this MVC 5 Controller:
[HttpPost]
[Route(@"delikte")]
public void saveDelikte(List<Delikt> delikte)
{
... // delikte is null
}
As I can see from IE debug tools, the POST contains the following data:
{"delikte":[{"VerfahrenId":"6","DeliktId":"4123"},{"VerfahrenId":"6","DeliktId":"4121"}]}
And should be converted to a List of this object:
public class Delikt
{
public int VerfahrenId { get; set; }
public int DeliktId { get; set; }
}
I thought it could be a problem from the definition of VerfahrenId and DeliktId as int in the class Delikt, but changing to string did not change the problem.
I have read other threads but I could not find a solution there (my post includes dataType, contentType, the posted information seems in the right format). Where is my mistake?
I would try removing the property name from your POST data:
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json",
url: "../delikte",
data: JSON.stringify(delikte)
});
It may also help to explicitly specify that the value comes from the POST body:
[HttpPost]
[Route(@"delikte")]
public void saveDelikte([FromBody]List<Delikt> delikte)
{
... // delikte is null
}
这篇关于POST对象的列表以MVC 5控制器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!