猿教程 Logo

ASP.NET MVC中调用Web API Delete方法

在前面的部分中,我们在Asp.NET MVC项目中实现了调用Web Api的Get、Post和Put方法。这里,我们将学习在Asp.Net MVC中调用Web API 的Delete方法。

在“创建包含CRUD操作的Web API接口5:实现Delete方法”一节中,我们已经创建了Web API项目和用来处理HTTP Delete请求的Delete方法。如下:

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();
    }
}

下面是一个学生列表视图,他通过调用Web API的Get方法来获取学生数据记录并展示在页面上。这里,我们将实现删除功能:当用户点击下面UI中的删除链接时自动删除数据库中对应的记录。


当用户在上面的UI中点击删除链接,它发送HTTP Get请求http://localhost:64189/student/delete/{id}到Student控制器,并传入当前id参数。让我们通过调用Web API的Delete方法实现删除功能。

第一步:

在StudentController 中创建HttpGet动作方法Delete(int id),如下所示。

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);
        //return View();
    }
    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");
    }
}


正如你所看到的,上面Delete()操作方法使用HttpClient发送HTTP Delete请求并传入当前id参数。第一个代码示例中所示的Web API控制器,将处理这个Delete请求并从数据源中删除对应记录。

通过本节学习,您可以调用Web API的Delete来删除数据库中对应的记录。



版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/webapi/mvc-consume-webapi-delete.html