POST对象的列表以MVC 5控制器 [英] POST a list of objects to MVC 5 Controller

查看:97
本文介绍了POST对象的列表以MVC 5控制器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要发布对象的列表,以一个MVC 5控制器,但只有空达到控制方法。这个帖子:

  $。阿贾克斯({
    键入:POST,
    数据类型:JSON
    的contentType:应用/ JSON
    网址:../delikte
    数据:JSON.stringify({delikte:delikte})
});

进入该MVC 5控制器:

  [HttpPost]
[路线(@delikte)]
公共无效saveDelikte(列表< D​​elikt> 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; D​​elikt&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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆