2016-07-05 26 views
0

我試圖添加收藏夾到收藏 - List<Attraction>每當用戶點擊所需的Attraction鏈接。通過WebApi添加到收藏(列表)POST

我的API控制器如下:

public class FavouritesController : ApiController 
{ 
    private List<Attraction> _favourites; 

    private readonly IRepository _repo; 

    public FavouritesController(IRepository repo) 
    { 
     _repo = repo; 
    } 

    public IEnumerable<Attraction> Get() 
    { 
     return _favourites; 
    } 

    [HttpPost] 
    public IHttpActionResult Add(int id) 
    { 
     if (_favourites == null) 
     { 
      _favourites = new List<Attraction>(); 
     } 

     var attraction = _repo.FindAttractionById(id); 

     if (attraction == null) 
     { 
      return BadRequest(); 
     } 

     _favourites.Add(attraction); 

     return Ok(); 
    } 

這是我AngularJS服務:

function addToFavourites(id) { 
    $http.post("/api/v1/favourites/" + id) 
     .success(function(response) { 
      //Success 
     }) 

然後在相位控制器頁:

$scope.addToFavourites = function() { 
    dataService.addToFavourites(this.attraction.id); 
    $scope.Favourites = dataService.getFavourites(); 
} 

它的工作原理時,我設置了斷點 - 但只添加了一個項目到集合中 - 所以如果我點擊第一個項目它會添加t他是第一個項目,但如果點擊第二個項目,它會添加第二個項目,但不保留第一個項目。

如果我在瀏覽器中請求Getlocalhost:xxxx/api/v1/favourites它只是在窗口中顯示null。我該如何解決這個問題並確保收集狀態保持一致?

回答

1

首先,HTTP狀態較少。這意味着每個請求都是一個新請求,並且List<Attraction> _favourites在您的代碼中將始終爲空。

如果要保留數據,您希望將其保存在數據庫等持久性存儲中。

如果你只是想測試進行測試的緣故API ,可以使靜態 -

private static List<Attraction> _favourites; 
+0

感謝,它只是在一瞬間測試 - 將添加到數據庫的下一個任務。 –