OData を使用して、Web API 呼び出しから返されたアイテムの長いリストをページ分割しています。開始インデックスと終了インデックスを使用して、URL を介してデータをフィルター処理できます。
私が持っている質問は、どうすればアイテムの総数を知ることができますか? したがって、Web API を呼び出すモバイル デバイスで 1/3 (20 項目) を表示できます。
OData を使用して、Web API 呼び出しから返されたアイテムの長いリストをページ分割しています。開始インデックスと終了インデックスを使用して、URL を介してデータをフィルター処理できます。
私が持っている質問は、どうすればアイテムの総数を知ることができますか? したがって、Web API を呼び出すモバイル デバイスで 1/3 (20 項目) を表示できます。
このアプローチを試してください: http://www.strathweb.com/2012/08/supporting-odata-inlinecount-with-the-new-web-api-odata-preview-package/
最新の Web API OData パッケージを使用します。
最終的な Web API OData パッケージが出荷されるまで (この秋頃、11 月頃になるはずです)、$inlinecount がすぐにサポートされるようになるまでは、このソリューションが最善の策である可能性があります。
クエリで使用$inlinecount=allpages
して、トップとスキップなしで結果内のすべてのエンティティの数を取得できます。例えば:
http://services.odata.org/OData/OData.svc/Products?$top=1&skip=1&$inlinecount=allpages
単一の製品を返しますが、9 のインライン カウントも返します (エンティティ セットに 9 つの製品があるため)。
私は先週正確な問題を抱えていました。有用なメタデータを使用して ASP.NET Web API 応答を拡張するを確認してください
この投稿とサンプル コードを使用して、OData を使用してページング グリッドを起動および実行しました。サンプルで詳しく説明されているように、委任ハンドラーを作成して HttpResponseMessage をキャプチャし、それをアイテム数を含むカスタム メタデータにラップしました。デフォルトの QueryableAttribute を継承するカスタム属性 CustomQueryableAttribute も作成されます。
ここでは少し複雑に聞こえるかもしれませんが、実際に実装するのは非常に簡単です。30分くらいで何とか出来上がりました。
Web API の将来のバージョンでは、より完全な OData サポートが提供されることを願っています。
編集: Odata サポートは、Web API には同梱されません。RTM リリースでは、照会可能な属性が削除されています。より完全な OData サポートは、別の Nuget パッケージを介して最初のリリース後に利用できるようになります。