上一篇搭建了页面,这里写下功能。
这里我用WebApi实现数据的增删改查。
一、新建Controller
为了区分明确,我在Controller文件夹下建立一个WebApi文件夹存放。
选中文件夹右键单击=》添加=》控制器=》Web Api控制器
1、这样会自动生成一个控制器,继承ApiController类
namespace mvc.Controllers.WebApi { public class DepartmentController : ApiController { } }
2、在App_Start文件夹下会自动生成WebApiConfig文件,这个文件的功能是定义WebApi的路由,WebApi路由是单独控制的
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
3、路由是可以自定义的,不一定要按照默认的规则,可以根据自己的需要调整路由规则。
为了区分更明确,我在默认路由的基础上增加一个action
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
二、为了使用方便新建一些辅助类
在models文件夹下,新增PageQuery文件夹存放
1、记录返回值
public class APIResult { public APIResult() { message = "请求失败"; } public bool success { get; set; } public string message { get; set; } public int code { get; set; } public object data { get; set; } }
2、查询基类
public class QueryBase { public int page { get; set; } public int rows { get; set; } }
3、查询类,继承查询基类
public class DepartmentQuery: QueryBase { /// <summary> /// 部门名称 /// </summary> public string Name { get; set; } }
三、实现功能
public class DepartmentController : ApiController { /// <summary> /// 查询部门信息 /// </summary> /// <param name="query"></param> /// <returns></returns> [HttpPost] public IHttpActionResult Pager(DepartmentQuery query) { List<Department> deplist = new List<Department>(); int total = 0; using (var context = new DBContext.PracticeContext()) { var querylist = context.Department.AsQueryable(); if (!string.IsNullOrEmpty(query.Name)) { querylist = querylist.Where(s => s.Name.Contains(query.Name)); } querylist = querylist.Where(s => s.IsDel == false); total = querylist.Count(); var result = querylist.OrderByDescending(s => s.OrderId).Skip(query.rows * (query.page - 1)).Take(query.rows); deplist = result.ToList(); return Ok(new APIResult() { success = true, message = "请求成功", data = deplist }); } } /// <summary> /// 新增部门信息 /// </summary> /// <param name="dep">部门model</param> /// <returns></returns> [HttpPut] public IHttpActionResult Create(Department dep) { using (var context = new DBContext.PracticeContext()) { Department department = new Department { Name = dep.Name, Introduce = dep.Introduce, OrderId = dep.OrderId, IsShow = dep.IsShow }; context.Department.Add(department); context.SaveChanges(); return Ok(new APIResult() { success = true, data = department, message = "新增成功" }); } } /// <summary> /// 修改部门信息 /// </summary> /// <param name="dep">部门model</param> /// <returns></returns> [HttpPut] public IHttpActionResult Update(int id, Department dep) { using (var context = new DBContext.PracticeContext()) { Department department = context.Department.Find(id); if (department != null) { department.Name = dep.Name; department.Introduce = dep.Introduce; department.OrderId = dep.OrderId; department.IsShow = dep.IsShow; } context.SaveChanges(); return Ok(new APIResult() { success = true, data = department, message = "更新成功" }); } } /// <summary> /// 删除部门 /// </summary> /// <param name="id">Id</param> /// <returns></returns> [HttpDelete] public IHttpActionResult Delete(int id) { using (var context = new DBContext.PracticeContext()) { Department department = context.Department.Find(id); if (department != null) { department.IsDel = true; } context.SaveChanges(); return Ok(new APIResult() { success = true, message = "删除成功" }); } } }
四、调用WebApi接口实现