ASP.NET Web API - Sử dụng phương thức Delete
Sử dụng phương thức Delete của Web API trong ASP.NET MVC
Trong các phần trước, chúng ta đã sử dụng các phương thức Get, Post và Put của Web API. Ở đây, chúng ta sẽ sử dụng phương thức Delete của Web API trong ASP.NET MVC để xóa một bản ghi.
Chúng ta đã tạo Web API với phương thức Delete xử lý yêu cầu HTTP DELETE trong phần Implement Delete Method như bên dưới.
Web API mẫu với phương pháp xóa
public class StudentController : ApiController
{
public StudentController()
{
}
public IHttpActionResult Delete(int id)
{
if (id <= 0)
return BadRequest("Not a valid student id");
using (var ctx = new SchoolDBEntities())
{
var student = ctx.Students
.Where(s => s.StudentID == id)
.FirstOrDefault();
ctx.Entry(student).State = System.Data.Entity.EntityState.Deleted;
ctx.SaveChanges();
}
return Ok();
}
}
Sau đây là chế độ view danh sách Student được tạo trong phương thức Consuming get trong phần MVC. Ở đây, chúng tôi sẽ triển khai chức năng xóa khi người dùng nhấp vào liên kết Delete trong UI sau.
Khi người dùng nhấp vào liên kết Xóa trong UI ở trên, nó sẽ gửi yêu cầu HTTP Get http://localhost:64189/student/delete/{id} đến bộ điều khiển Student với tham số id hiện tại. Vì vậy, hãy triển khai chức năng xóa bằng cách sử dụng phương thức Xóa của Web API.
Bước 1:
Tạo phương thức hành động HttpGet Delete với tham số id trong MVC StudentController như được hiển thị bên dưới.
Ví dụ: Triển khai phương thức HttpGet Delete
public class StudentController : Controller
{
// GET: Student
public ActionResult Index()
{
IList<StudentViewModel> students = null;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:64189/api/student");
//HTTP GET
var responseTask = client.GetAsync("student");
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = result.Content.ReadAsAsync<IList<StudentViewModel>>();
readTask.Wait();
students = readTask.Result;
}
}
return View(students);
}
public ActionResult Delete(int id)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:64189/api/");
//HTTP DELETE
var deleteTask = client.DeleteAsync("student/" + id.ToString());
deleteTask.Wait();
var result = deleteTask.Result;
if (result.IsSuccessStatusCode)
{
return RedirectToAction("Index");
}
}
return RedirectToAction("Index");
}
}
Như bạn có thể thấy, phương thức hành động Delete() ở trên sử dụng HttpClient để gửi yêu cầu HTTP DELETE với tham số id hiện tại. Bộ điều khiển Web API được hiển thị trong ví dụ mã đầu tiên sẽ xử lý yêu cầu DELETE này và xóa bản ghi khỏi nguồn dữ liệu. Truy cập phần HttpClient để tìm hiểu thêm về nó.
Vì vậy, theo cách này, bạn có thể sử dụng phương thức Delete của Web API trong ASP.NET MVC.