Web API 控制器模型返回 null



当我将Web API控制器与FROMBody一起使用时,模型总是返回null

产品对象的模型如下,其中包含ProductID和订单列表对象:

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 对象,它就可以正常工作。

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

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

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

对于订单列表始终为空而不带括号的问题, 您能否将集合的 setter 设为私有,并在它为空时返回一个新的初始化列表?或者,您可以编写一个默认构造函数来初始化订单列表。

请参阅:WebAPI 2 不反序列化 ListPOST 请求中 FromBody 对象的属性

还可以尝试删除 FromBody 以绑定到复杂类型。对于一个或多个产品模型的自定义处理,请尝试创建自定义模型绑定器。

最新更新