我正在使用OData來分頁從web api調用返回的一長串項目。我可以通過帶有開始和結束索引的網址過濾數據。
我的問題是,我怎麼知道項目總數?所以我可以在我的移動設備上顯示第1頁,共3頁(20項),它調用Web API。
我正在使用OData來分頁從web api調用返回的一長串項目。我可以通過帶有開始和結束索引的網址過濾數據。
我的問題是,我怎麼知道項目總數?所以我可以在我的移動設備上顯示第1頁,共3頁(20項),它調用Web API。
您可以在查詢中使用$ inlinecount = allpages來獲得結果中沒有頂部和跳過的所有實體的計數。例如:?
http://services.odata.org/OData/OData.svc/Products $頂部= 1 &跳過= 1 & $ inlinecount =所有頁
返回的單品也是9直列數(因爲有9種產品在實體集)。
謝謝,但發現以下鏈接,因爲哪些國家不支持開箱即用 - > http://thedevstop.wordpress.com/2012/04/05/adding-odata-inline-count-support-to-the- asp-net-web-api/ – amateur
嘗試使用Microsoft.AspNet.WebApi.OData版本0.1.0-alpha-120815返回400 - {「Message」:「不支持查詢參數'$ inlinecount'。」} –
$ inlinecount已棄用。在這裏看到我的答案:http:// stackoverflow。com/a/31004759/331281 – Dejan
這是一個工作版本的鏈接,它已經作爲QueryableAttribute實現。 http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/88372a0b4ab9#src%2fMicrosoft.Web.Http.Data%2fQueryFilterAttribute.cs
編輯: 使用此鏈接進行了詳細的解釋 - > http://www.strathweb.com/2012/08/supporting-odata-inlinecount-with-the-new-web-api-odata-preview-package/
該URL目前無效:「URL無效 很抱歉,該URL的查詢字符串無效。如果您仍然遇到問題或希望向我們發送有關此錯誤的更多信息,請與我們聯繫。 返回到CodePlex主頁。「 –
已更新鏈接:) –
我知道這已經有點老了,但對於任何查看此建議的人,您可能都會考慮Linq to Querystring,它支持$ inlinecount:https://github.com/ Roysvork/LinqToQuerystring/ –
它採用了最新的Web API的OData包。
直到最終確定的Web API OData包出貨(今年秋天的某個時候,應該在11月份左右),當$ inlinecount支持開箱即用時,此解決方案可能是最佳選擇。
適用於我。涼! – asa
我上週有確切的問題。 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支持。
從http://stackoverflow.com/questions/1130049移動 – Mark
請注意,用戶閱讀頁面時,項目總數可能會發生變化。例如,如果列表中的「項目」是SO問題的答案,那麼在用戶到達列表末尾之前,該數字可能會從20增加到30。這使得總頁數有些不確定。 – Peter