Dot-Net

如何使用角度 $http 服務從返回的 JSON 對像中獲取 Odata Next Link

  • June 18, 2021

我已經為我的 web api 實現了 Odata 查詢語法。我成功地只能返回前 10 個結果和更多結果的連結。但是,我無法使用我的 angularjs 前端從伺服器返回的 JSON 對像中提取此連結。

假設伺服器響應如下:

{
 "odata.metadata":"http://localhost:60497/odata/$metadata#tables","value":[
   {
     "id":001,"name":"abc"
   },{
     "id":002,"name":"pqr"
   },{
     "id":003,"name":"xyz"
   },{
     .
     .
     .
 ],"odata.nextLink":"http://localhost:60497/odata/tables?$skip=10"
}

現在我通過使用 $http 的成功方法將返回的數據分配給一個變數並使用 ng-repeat 來顯示數據。我將其分配如下:

.success(function(data)){
 $scope.foo = data.value;
}

但是,當我嘗試使用以下方法訪問下一個連結時:

$scope.link = data.odata.nextLink;

在成功方法中,它給了我一個錯誤。我在這裡錯過了什麼?我還能如何訪問返回的連結?還有其他方法可以實現伺服器端分頁嗎?

我有同樣的問題,或多或少。我想這與 JavaScript 對象及其屬性的引用方式有關。參考資料

data.odata.nextLink

意味著有一個帶有子屬性/欄位“nextLink”的屬性“odata”。情況並非如此,“odata.nextLink”是屬性的名稱。我不知道為什麼 OData 是這樣的。

我通過使用字元串引用獲得了這個屬性的內容,即

data['odata.nextLink']

不知道有沒有什麼缺點,不過好像還可以。。。

   using Newtonsoft.Json;     
   [JsonProperty("@odata.nextLink")]
   public string nextPage { get; set; }

引用自:https://stackoverflow.com/questions/30036124