从HttpPost获取IEnumerable

时间:2019-02-17 01:40:48

标签: json asp.net-core-webapi

我正在尝试从HttpPost请求创建IEnumerable。

正文中的JSON内容如下:

[{"id":15496,"order":0},{"id":15500,"order":1},{"id":15503,"order":2}]

发布请求如下:

    [HttpPost("[action]")]
    public IActionResult SendReorderRows([FromBody] IEnumerable<ReorderRow> rows){
         foreach(var row in rows){
             Debug.WriteLine(row.id);
         }
    }

所引用的类在这里:

    public class ReorderRow
    {
        public int id;
        public int order;
    }

但是,当我运行此示例时,它为我提供了

  

对象引用未设置为对象的实例

“行”错误。

我很难找到解析JSON并将其转换为IEnumerable以便在API中使用的基本方法。我想念一些简单的东西吗?

1 个答案:

答案 0 :(得分:4)

改为使用数组。

[HttpPost("[action]")]
public IActionResult SendReorderRows([FromBody] ReorderRow[] rows) {
     foreach(var row in rows){
         Debug.WriteLine(row.id);
     }
}

它将绑定到JSON数组。

您还需要对象模型中的公共属性,以便在绑定对象时正确填充它们。

public class ReorderRow {
    public int id { get; set; }
    public int order { get; set; }
}

引用Model Binding in ASP.NET Core : How model binding works