【发布时间】:2017-07-20 07:34:28
【问题描述】:
我定义了以下模型类:
public class LinePostModel
{
[Key]
public int OrderId { get; set; }
public IList<OrderLine> OrderLines { get; set; }
}
我的 OData 控制器上的这个方法:
public async Task<IHttpActionResult> Post(LinePostModel model)
{
//validae model and its OrderLines collection and save to repo.
return Created(model);
}
服务器正确接收模型对象,并处理每个查找。我的问题是返回给客户端的 RESPONSE 只包含原始 OrderId 属性,不包含集合属性 OrderLines。
如何解决这个问题,以便将整个复杂对象返回给客户端?
编辑:添加示例 json:
这是客户发布的内容:
{
orderId:4,
orderLines: [
{
lineType: "S",
orderQty: 10,
priceCode: "D",
stockCode: "62.C6W026A.050",
warehouse: "GS",
orderId:4
},
{
lineType: "S",
orderQty: 20,
priceCode: "D",
stockCode: "62.C6W026A.060",
warehouse: "GS",
orderId:4
}
]
}
这是客户端从服务器接收到的内容:
{
"@odata.context": "http://localhost:4095/$metadata#OrderLines/$entity",
"orderId": 4
}
我已尝试将服务器更改为返回Ok(model) 而不是Created(model),但这并没有什么区别。
控制器方法中return Created(model) 行上的断点表明,此时模型对象肯定包含 OrderLines 的集合。
【问题讨论】:
-
OrderLines 在客户端包含什么?是空的吗?
-
当客户端调用 Post 方法时,模型在服务器端被正确填充和反序列化。问题是当服务器向客户端返回 Created 响应时,该响应对象根本不包含 OrderLines 属性。
-
返回结果时我还没用 Created。我使用
return Ok(model);来返回内容。你可以试试看。 -
Ok(model) 和 Created(model) 都试过了,但都无济于事。
-
您可以在检索数据的地方发布客户端脚本
标签: c# asp.net-web-api odata