2017-02-03 54 views
0

我知道這個問題之前已經問過,我已經看過其他答案,但我似乎無法解決這個問題。當使用帶角js的$ http.Get時,我一直接收空對象服務器端。任何人都可以找到我失蹤或我做錯了什麼?ASP.NET MVC + Angular.js 1 HttpGet json對象在服務器上爲空

我的角度:

module.controller("albumReviewController", function ($http, $scope) { 
    var albumID = $(".ui-albumID").find("input").val(); 
    $http(
    { 
     method: 'Get', 
     url: 'api/AlbumAPI/GetTotalAlbumRatings', 
     data: { albumid: albumID } 
     }).then(function successCallback(response) { 
      $scope.totalRating = response.data; 
     }), function errorCallback(response) { 
      window.console.log(response); 
     }; 
    }; 
}); 

和我的API控制器:

[HttpGet("GetTotalAlbumRatings")] 
[Route("api/AlbumAPI/GetTotalAlbumRatings/{model}")] 
public JsonResult GetTotalAlbumRatings([FromBody]RatingAngularViewModel model) 
    { 
     // do stuff 
    } 

和模型:

public class RatingAngularViewModel 
{ 
    public string AlbumID { get; set; } 

    public RatingAngularViewModel() 
    { 
    } 
} 

我試圖發送一個GET請求來檢索某些值從服務器,但我的模型始終爲空。

+0

在api控制器'Route'看起來可疑我。然而,更有趣的是,你沒有使用angular來檢索你的'albumID',並且你正在將'albumid'傳遞給你的服務器,但是你的模型似乎期待'AlbumID' .... – Claies

+0

耶一直認爲在API控制器中的路由是錯誤的,可能是這個原因。我將albumid更改爲AlbumID,但仍爲空:( – lachis

回答

0

我做了以下更改,它的工作。

在我的控制器

(移除路由屬性):

public JsonResult GetTotalAlbumRatings([FromUri]RatingAngularViewModel model) 
    { 
     // do stuff 
    } 
在角

module.controller("albumReviewController", function ($http, $scope) { 
var albumID = $(".ui-albumID").find("input").val(); 
$http(
{ 
    method: 'Get', 
    url: 'api/AlbumAPI/GetTotalAlbumRatings', 
    params: { AlbumID: albumID } 
    }).then(function successCallback(response) { 
     $scope.totalRating = response.data; 
    }), function errorCallback(response) { 
     window.console.log(response); 
    }; 
}; 

});

發生這種情況是因爲我在httpGet中使用'data'。看到這裏: https://stackoverflow.com/a/13760360/2589445