使用IQueryable时如何避免控制器响应中的“arrayof ...”

时间:2014-12-12 14:47:01

标签: asp.net asp.net-web-api odata iqueryable

我有一个webapi控制器,它返回一个Items对象,如:

<Items>
   <Item>
    <Color>PINK</Color>
    <CommercialProductBundle>NOTAPPLICABLE</CommercialProductBundle>
    <Descriptions/>
   </Item>
   <Item>
    <Color>Black</Color>
    <CommercialProductBundle>NOTAPPLICABLE</CommercialProductBundle>
    <Descriptions/>
   </Item>
</Items>

为了使用ODATA查询功能,我从

更改了返回类型

公开项目GetAllItems()

其中Items是'List'到

IQueryable GetAllItems()

但接着我的回答显示:

<ArrayOfItem xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Item>
    <Color>PINK</Color>
    <CommercialProductBundle>NOTAPPLICABLE</CommercialProductBundle>
    <Descriptions/>
</Item>
<Item>
   <Color>Black</Color>
   <CommercialProductBundle>NOTAPPLICABLE</CommercialProductBundle>
   <Descriptions/>
</Item>
</ArrayOfItem>

有没有办法摆脱'ArrayOf',再次显示初始的xml?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您是否让控制器来自ODataController?您是否安装了ASP.NET Web API OData V1-3程序集?您是否修改了WebApiConfig.cs以映射OData路由?

由于OData可查询性取决于其唯一的路由约定和Web API配置,因此您可能希望将本教程引用到http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v3/creating-an-odata-endpoint并相应地实现以获得此可配置性。