2012-05-22 30 views
10

我正在使用OData來分頁從web api調用返回的一長串項目。我可以通過帶有開始和結束索引的網址過濾數據。

我的問題是,我怎麼知道項目總數?所以我可以在我的移動設備上顯示第1頁,共3頁(20項),它調用Web API。

+0

請注意,用戶閱讀頁面時,項目總數可能會發生變化。例如,如果列表中的「項目」是SO問題的答案,那麼在用戶到達列表末尾之前,該數字可能會從20增加到30。這使得總頁數有些不確定。 – Peter

回答

3

您可以在查詢中使用$ inlinecount = allpages來獲得結果中沒有頂部和跳過的所有實體的計數。例如:?

http://services.odata.org/OData/OData.svc/Products $頂部= 1 &跳過= 1 & $ inlinecount =所有頁

返回的單品也是9直列數(因爲有9種產品在實體集)。

+1

謝謝,但發現以下鏈接,因爲哪些國家不支持開箱即用 - > http://thedevstop.wordpress.com/2012/04/05/adding-odata-inline-count-support-to-the- asp-net-web-api/ – amateur

+1

嘗試使用Microsoft.AspNet.WebApi.OData版本0.1.0-alpha-120815返回400 - {「Message」:「不支持查詢參數'$ inlinecount'。」} –

+1

$ inlinecount已棄用。在這裏看到我的答案:http:// stackoverflow。com/a/31004759/331281 – Dejan

6
+0

該URL目前無效:「URL無效 很抱歉,該URL的查詢字符串無效。如果您仍然遇到問題或希望向我們發送有關此錯誤的更多信息,請與我們聯繫。 返回到CodePlex主頁。「 –

+1

已更新鏈接:) –

+1

我知道這已經有點老了,但對於任何查看此建議的人,您可能都會考慮Linq to Querystring,它支持$ inlinecount:https://github.com/ Roysvork/LinqToQuerystring/ –

2

我上週有確切的問題。 Check out Extending your ASP.NET Web API responses with useful metadata

我用這篇文章和示例代碼來獲得一個使用OData的分頁網格。如示例中詳細描述的,我創建了一個委派處理程序來捕獲HttpResponseMessage並將其包含在包含項目計數的自定義元數據中。自定義屬性CustomQueryableAttribute也被創建,它繼承了默認的QueryableAttribute。

這聽起來有點複雜,但實際上很簡單。我在30分鐘左右就開始跑步了。

希望未來版本的Web API具有更完整的OData支持。

編輯:Odata支持不會與Web API一起發貨。正在爲RTM版本刪除可查詢屬性。通過單獨的Nuget軟件包進行初始化後,有時會提供更完整的OData支持。

+0

從http://stackoverflow.com/questions/1130049移動 – Mark