【发布时间】:2018-05-22 06:10:36
【问题描述】:
我正在使用 ASP.NET Web api 2 构建我的第一个应用程序,只是为了教育目的。我想将数据存储在 Array 中(我知道,在 DB 中会更好)。 我写了几个 get 方法,它们工作正常,但我不知道为什么 DELETE 没有像我预期的那样工作。
我想从数组中删除具有提供 ID 的 Car。运行操作后,它显示具有特定 ID 的汽车已被删除,但是当我运行显示阵列中所有汽车的操作时,汽车似乎仍然存在。
请在下面找到控制器的代码。谁知道是什么原因?
using System;
using Cars.Models;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace Cars.Controllers
{
public class carsController : ApiController
{
List<Car> cars = new List<Car>(new Car[]
{
new Car { Id = 1, Name = "Opel", Price = 49999.9 },
new Car { Id = 2, Name = "Fiat", Price = 30000.0 },
new Car { Id = 3, Name = "BMW", Price = 100500.9 }
});
public HttpResponseMessage GetAllCars()
{
return Request.CreateResponse(HttpStatusCode.OK, cars);
}
[HttpDelete]
[Route("api/cars/deletecar/{id}")]
public IHttpActionResult DeleteCar(int id)
{
var car = cars.FirstOrDefault((p) => p.Id == id);
if(car!=null)
{
for(int i=0;i<=cars.Count;i++)
{
if (cars[i].Id==id)
{
cars.RemoveAt(i);
return Ok(cars );
}
}
}
return NotFound();
}
}
【问题讨论】:
-
在实现programtreasures的逻辑后,在得到
car对象后使用cars.Remove(car),而不是循环遍历cars list。
标签: c# asp.net asp.net-web-api web controller