复合c1 Odata Pageresult

时间:2015-04-01 13:00:09

标签: c# odata asp.net-web-api c1-cms

我在将Odata与PageResult结合使用时遇到了困难。 如果我设置了[可查询(PageSize = 5)]

,我会得到正确的结果,5项

但没有nextlink,我期待,所以我可以得到第2页的下一个结果。

Composite C1使用它自己的XML数据存储区,我认为这是问题的核心。

我为OData V3找到的所有示例(如果您使用http://www.composite.net/Products/Add-ons/All/Composite.AspNet.WebAPI,则会安装该版本) 告诉我只使用[Queryable(PageSize = 5)],它应该开箱即用。 但他们都使用实体框架,我不这样做,我认为这就是它破裂的地方。

这是我的结果,没有nextlink:

<Data>
    <ImageItem>
        <Id>1eeb46e3-1446-45e8-bab2-03ccb637b2ab</Id>
        <Title/>
        <SubTitle/>
    </ImageItem>
    <ImageItem>
        <Id>1eeb46e3-1446-45e8-bab2-03ccb637b2ab</Id>
        <Title/>
        <SubTitle/>
    </ImageItem>
    <ImageItem>
        <Id>1eeb46e3-1446-45e8-bab2-03ccb637b2ab</Id>
        <Title/>
        <SubTitle/>
    </ImageItem>
    <ImageItem>
        <Id>1eeb46e3-1446-45e8-bab2-03ccb637b2ab</Id>
        <Title/>
        <SubTitle/>
    </ImageItem>
    <ImageItem>
        <Id>1eeb46e3-1446-45e8-bab2-03ccb637b2ab</Id>
        <Title/>
        <SubTitle/>
    </ImageItem>
</Data>

代码:


    public class ImagesController : ApiController
    {
        public PageResult Get(ODataQueryOptions options)
        {
            using (var c = new DataConnection())
            {
                var querySettings = new ODataQuerySettings() { PageSize = 20 };

                var filtered = options.ApplyTo(c.Get(), querySettings).Cast().ToList().AsQueryable();
                return new PageResult(filtered, Request.GetNextPageLink(), 20);
            }
        }
    }

Request.GetNextPageLink()返回http://xx.local/api/images?$ skip = 5

变量过滤有一个包含19个图像项的列表。和filtered.Count()也返回19。

有人有建议甚至是解决方案吗? 复合C1安装是一个简单的安装,没有额外的处理程序。 复合C1 4.2 Update 1,Build no。 4.2.5287.17495

1 个答案:

答案 0 :(得分:0)

尝试删除[Queryable]属性,它会阻止正确呈现PageResult响应。