我在使用Odata和PageResult結合時遇到了困難。 我得到正確的結果,如果我設置[5]如果我設置[頁面大小爲5]Composite c1 Odata Pageresult
但沒有nextlink,我期望,所以我可以得到第2頁的下一個結果爲例。
複合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 $跳過= 5
變量過濾了列表的19個圖像項目。和filtered.Count()也返回19。
有人有建議甚至是解決方案嗎? 複合材料C1安裝是一個簡單的骨頭,沒有額外的處理程序。 Composite C1 4.2 Update 1,Build no。 4.2.5287.17495
謝謝你的建議,但它沒有解決。 我用現在的代碼更新了問題。 我設置了20硬編碼,只是爲了確保分頁應該工作。 – 2015-04-01 20:54:45