Web API 2 多个嵌套模型

Web API 2 multiple nested models

我正在创建一个网络服务,其中可以 post 多行的新订单。

型号

public class Order {

    public int OrderID { get; set; }
    public string Description { get; set; }
    public string Account { get; set; }
    public ICollection<OrderLine> OrderLine { get; set; }

}

public class OrderLine {
    public int OrderLineID { get; set; }
    public int OrderID { get; set; }
    public string Product { get; set; }
    public double Price { get; set; }
}

控制器

public class OrderController : ApiController
{
    [HttpPost]
    public string Create(Order order)
    {
        OrderRepository or = new OrderRepository();

        return "Foo";
    }
}

使用 Postman,我在 Json 中创建了一个 post 请求,如下所示:

{"Description" : "Abc", "Account" : "MyAccount",
    "OrderLine[0]" : {
        "ItemCode": "Item1",
        "Price" : "10"
    } 
}

当我 运行 Visual Studio 中的调试器时,Order 模型是从请求中填充的,但 OrderLine 为 NULL。当我改变

public ICollection<OrderLine> OrderLine {get; set;}

public OrderLine OrderLine {get; set;}

还有我在 Postman 中的 Json 字符串

{"Description" : "Abc", "YourReference" : "yourABC", "Account" : "AB1010",
    "OrderLine" : {
        "ItemCode": "Item1",
        "Price" : "10"
    }
}

当我 post 数据时,我的模型被填充。我想要 post OrderLines 的集合。我做错了什么?

您正在发布 OrderLine 的数组,因此您的请求需要包含一个数组:

"OrderLine" : [{}, {}]

它应该是这样的:

{"Description" : "Abc", "YourReference" : "yourABC", "Account" : "AB1010",
    "OrderLine" : [{
        "ItemCode": "Item1",
        "Price" : "10"
    },
   {
        "ItemCode": "Item2",
        "Price" : "20"
    }]
}