Web API Controller模型返回null

时间:2018-05-14 00:11:10

标签: c# json asp.net-web-api model controller

当我使用带有FROMBody的Web API控制器时,模型始终返回null

Product对象的模型如下ProductID和Order对象列表:

public class ProductModel
{
    [Required]
    public string productID { get; set; }
    [Required]
    public List<Order> order { get; set; }

}
public class Order
{
    public string orderId { get; set; }
    public string name { get; set; }
}

public IHttpActionResult PostProduct([FromBody]ProductModel model)
{
    var jsonContent = new JavaScriptSerializer().Serialize(model);
}

下面的POSTMAN中使用的JSON示例。注意到当在带有1个订单的产品中传递时,我没有用方括号[]括起Order对象,这是由于终端系统消耗控制器总是在没有[]的情况下传入单品。

调试时,Order始终为null。只要我使用[]包含Order对象,它就可以正常工作。

{
    "productID":"1",
    "order":{
        "orderId":"1-88",
        "name":"Shoe"
        }
}

是否可以设置模型以使用上述JSON处理两种方案,单个产品和多个产品。

我在尝试一些不可能的事情吗?

1 个答案:

答案 0 :(得分:0)

对于没有括号的订单列表始终为null的问题, 你可以为集合设置私有的setter并返回一个新的初始化列表,如果它是空的吗?或者,您可以编写初始化订单列表的默认构造函数。

请参阅:WebAPI 2 not deserializing List<string> property of FromBody object in POST request

您也可以尝试删除FromBody以绑定到复杂类型。要自定义处理一个或多个产品型号,请尝试创建自定义模型装订器。