当我使用带有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处理两种方案,单个产品和多个产品。
我在尝试一些不可能的事情吗?
答案 0 :(得分:0)
对于没有括号的订单列表始终为null的问题, 你可以为集合设置私有的setter并返回一个新的初始化列表,如果它是空的吗?或者,您可以编写初始化订单列表的默认构造函数。
请参阅:WebAPI 2 not deserializing List<string> property of FromBody object in POST request
您也可以尝试删除FromBody以绑定到复杂类型。要自定义处理一个或多个产品型号,请尝试创建自定义模型装订器。