我想在用户点击所需List<Attraction>
的链接时,将收藏夹添加到收藏集Attraction
。
我的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
})
然后在页面的Angular控制器中:
$scope.addToFavourites = function() {
dataService.addToFavourites(this.attraction.id);
$scope.Favourites = dataService.getFavourites();
}
当我设置断点时它起作用 - 但只添加一个项目到集合 - 所以如果我点击第一个项目它会添加第一个项目,但是如果点击第二个项目它会添加第二个项目,但是不保留首先。
如果我在浏览器中向Get
发出localhost:xxxx/api/v1/favourites
请求,则只在窗口中显示null
。我该如何解决这个问题并确保收集的状态保持一致?
答案 0 :(得分:1)
首先,HTTP状态较少。这意味着每个请求都是一个新请求,List<Attraction> _favourites
在您的代码中始终为空。
如果要保留数据,则希望将其保留在数据库等持久存储中。
如果您只是想测试API 以便进行测试,您可以静态 -
private static List<Attraction> _favourites;