MVC5使用Angular.Js实现Crud

小咪咪 2021-06-26 16:06 379阅读 0赞

CelularModel.cs

  1. using System.ComponentModel.DataAnnotations;
  2. namespace Angular.App.Data.EntityConfig
  3. {
  4. public class CelularModel
  5. {
  6. public int Id { get; set; }
  7. [Required(ErrorMessage = "填写品牌领域")]
  8. public string Marca { get; set; }
  9. public string Modelo { get; set; }
  10. public string Cor { get; set; }
  11. public string TipoChip { get; set; }
  12. public string MemoriaInterna { get; set; }
  13. }
  14. }

CelularRepository.cs

  1. using Angular.App.Data.EntityConfig;
  2. using Dapper;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data.Entity;
  6. using System.Linq;
  7. namespace Angular.App.Data.Repository
  8. {
  9. public class CelularRepository
  10. {
  11. private readonly DataContext _context = new DataContext();
  12. //获取芯片类型
  13. public CelularModel ObterPorTipoChip(string tipoChip)
  14. {
  15. var sql = @"select * from celulares c" + "Where c.tipochip = @tipoChip";
  16. using (var cn = _context.Database.Connection)
  17. {
  18. cn.Open();
  19. var cliente = cn.Query<CelularModel>(sql);
  20. return cliente.FirstOrDefault();
  21. }
  22. }
  23. //按品牌获取
  24. public CelularModel ObterPorMarca(string marca)
  25. {
  26. var sql = @"select * from celulares c" + "Where c.marca = @marca";
  27. using (var cn = _context.Database.Connection)
  28. {
  29. cn.Open();
  30. var cliente = cn.Query<CelularModel>(sql);
  31. return cliente.FirstOrDefault();
  32. }
  33. }
  34. //由Id
  35. public CelularModel ObterPorId(int id)
  36. {
  37. var sql = @"select * from celulares c " + "Where c.id = @id";
  38. using (var cn = _context.Database.Connection)
  39. {
  40. cn.Open();
  41. var cliente = cn.Query<CelularModel>(sql, new { id = id });
  42. return cliente.FirstOrDefault();
  43. }
  44. }
  45. public IQueryable<CelularModel> ObterTodos()
  46. {
  47. return _context.Celular;
  48. }
  49. //更新
  50. public void Atualizar(CelularModel celular)
  51. {
  52. _context.Entry(celular).State = EntityState.Modified;
  53. _context.SaveChanges();
  54. }
  55. //添加
  56. public void Incluir(CelularModel celular)
  57. {
  58. _context.Celular.Add(celular);
  59. _context.SaveChanges();
  60. }
  61. //删除
  62. public void Excluir(int id)
  63. {
  64. _context.Celular.Remove(_context.Celular.Find(id));
  65. _context.SaveChanges();
  66. }
  67. public void Dispose()
  68. {
  69. _context.Dispose();
  70. GC.SuppressFinalize(this);
  71. }
  72. }
  73. }

ClienteService.cs

  1. using Angular.App.Data.EntityConfig;
  2. using Angular.App.Data.Repository;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. namespace Angular.App.Application
  7. {
  8. public class ClienteService
  9. {
  10. private CelularRepository _repository = new CelularRepository();
  11. public CelularModel ObterPorTipoChip(string tipoChip)
  12. {
  13. return _repository.ObterPorTipoChip(tipoChip);
  14. }
  15. public CelularModel ObterPorId(int id)
  16. {
  17. return _repository.ObterPorId(id);
  18. }
  19. public IQueryable<CelularModel> ObterTodos()
  20. {
  21. return _repository.ObterTodos();
  22. }
  23. public void Atualizar(CelularModel celular)
  24. {
  25. _repository.Atualizar(celular);
  26. }
  27. public void Incluir(CelularModel celular)
  28. {
  29. _repository.Incluir(celular);
  30. }
  31. public void Excluir(int id)
  32. {
  33. _repository.Excluir(id);
  34. }
  35. public void Dispose()
  36. {
  37. _repository.Dispose();
  38. GC.SuppressFinalize(this);
  39. }
  40. }
  41. }

DataContext.cs

  1. using System.Data.Entity;
  2. using System.Data.Entity.ModelConfiguration.Conventions;
  3. using Angular.App.Data.EntityConfig;
  4. namespace Angular.App.Data
  5. {
  6. public class DataContext : DbContext
  7. {
  8. public DataContext()
  9. : base("DefaultConnection")
  10. {
  11. }
  12. public DbSet<CelularModel> Celular { get; set; }
  13. protected override void OnModelCreating(DbModelBuilder modelBuilder)
  14. {
  15. modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
  16. modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
  17. modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
  18. modelBuilder.Configurations.Add(new CelularConfiguration());
  19. }
  20. }
  21. }

CelularConfiguration.cs

  1. using System.Data.Entity.ModelConfiguration;
  2. namespace Angular.App.Data.EntityConfig
  3. {
  4. public class CelularConfiguration: EntityTypeConfiguration<CelularModel>
  5. {
  6. public CelularConfiguration()
  7. {
  8. HasKey(c => c.Id);
  9. Property(c => c.Marca).IsRequired().HasMaxLength(50);
  10. Property(c => c.Modelo).IsRequired().HasMaxLength(50);
  11. Property(c => c.Cor).IsRequired().HasMaxLength(30);
  12. Property(c => c.TipoChip).IsRequired().HasMaxLength(30);
  13. Property(c => c.MemoriaInterna).IsRequired().HasMaxLength(3);
  14. ToTable("Celulares");
  15. }
  16. }
  17. }

CelularController.cs

  1. using Angular.App.Application;
  2. using Angular.App.Data.EntityConfig;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Net;
  7. using System.Net.Http;
  8. using System.Web.Http;
  9. namespace Angular.App.UI.Controllers
  10. {
  11. [RoutePrefix("api/v1/public")]
  12. public class CelularController : ApiController
  13. {
  14. private ClienteService _db = new ClienteService();
  15. [HttpGet]
  16. [Route("celulares")]
  17. //获取所有手机
  18. public IQueryable<CelularModel> ObterTodosCelulares()
  19. {
  20. return _db.ObterTodos();
  21. }
  22. [HttpGet]
  23. [Route("celular/{id:int}")]
  24. //通过ID获取手机
  25. public HttpResponseMessage ObterCelularPorId(int id)
  26. {
  27. if (id <= 0)
  28. return Request.CreateResponse(HttpStatusCode.BadRequest);
  29. return Request.CreateResponse(HttpStatusCode.OK, _db.ObterPorId(id));
  30. }
  31. [HttpPut]
  32. [Route("putCelular")]
  33. //更新手机
  34. public HttpResponseMessage AtualizarCelular(CelularModel celular)
  35. {
  36. if (celular == null)
  37. return Request.CreateResponse(HttpStatusCode.BadRequest);
  38. _db.Atualizar(celular);
  39. return Request.CreateResponse(HttpStatusCode.OK);
  40. }
  41. [HttpPost]
  42. [Route("postCelular")]
  43. //添加手机
  44. public HttpResponseMessage AdicionarCelular(CelularModel celular)
  45. {
  46. if (celular == null)
  47. return Request.CreateResponse(HttpStatusCode.BadRequest);
  48. _db.Incluir(celular);
  49. return Request.CreateResponse(HttpStatusCode.OK);
  50. }
  51. [HttpDelete]
  52. [Route("deleteCelular/{id:int}")]
  53. //删除手机
  54. public HttpResponseMessage RemoverCelular(int id)
  55. {
  56. if (id <= 0)
  57. return Request.CreateResponse(HttpStatusCode.BadRequest);
  58. _db.Excluir(id);
  59. return Request.CreateResponse(HttpStatusCode.OK);
  60. }
  61. }
  62. }

HomeController.cs

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. namespace Angular.App.UI.Controllers
  7. {
  8. public class HomeController : Controller
  9. {
  10. public ActionResult Index()
  11. {
  12. return View();
  13. }
  14. }
  15. }

Index.cshtml

  1. @{ ViewBag.Title = "Home Page"; } <div ng-controller="crudController"> <div class="divList"> <p><b><i>所有的手机</i></b></p> <table class="table table-hover table-responsive"> <tr> <td><b>Id</b></td> <td><b>品牌</b></td> <td><b>型号</b></td> <td><b>颜色</b></td> <td><b>芯片</b></td> <td><b>内存</b></td> </tr> <tbody> <tr ng-repeat="celular in celulares"> <td>{ { celular.Id}}</td> <td>{ { celular.Marca}}</td> <td>{ { celular.Modelo}}</td> <td>{ { celular.Cor}}</td> <td>{ { celular.TipoChip}}</td> <td>{ { celular.MemoriaInterna}}</td> <td> <span ng-click="obterCelularPorId(celular)" class="btn btn-primary">修改</span> <span ng-click="removerCelular(celular)" class="btn btn-danger">清除</span> </td> </tr> </tbody> </table> </div> <span ng-click="incluirCelularDiv()" class="btn btn-default">添加手机</span> <div ng-show="divCelular"> <p class="divHead"></p> <table class="table"> <tr> <td><b><i>{ { Acao}}手机</i></b></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td><b>Id</b></td> <td> <input type="text" disabled="disabled" ng-model="celularId" class="form-control" /> </td> <td><b>品牌</b></td> <td> <input type="text" ng-model="Marca" class="form-control" /> </td> </tr> <tr> <td><b>型号</b></td> <td> <input type="text" ng-model="Modelo" class="form-control" /> </td> <td><b>颜色</b></td> <td> <input type="text" ng-model="Cor" class="form-control" /> </td> </tr> <tr> <td><b>内存</b></td> <td> <input type="text" ng-model="MemoriaInterna" class="form-control" /> </td> <td><b>芯片类型</b></td> <td> <input type="text" ng-model="TipoChip" class="form-control" /> </td> </tr> <tr> <td></td> <td> <input type="button" class="btn btn-default" value="保存" ng-click="AdicionarAtualizarCelular()" /> <input type="button" class="btn btn-danger" value="取消" ng-click="Cancelar()" /> </td> </tr> </table> </div> </div> <script src="~/Scripts/angular.js"></script> <script src="~/Scripts/toastr.js"></script> <script type="text/javascript"> var app = angular.module("crudApp", []); app.service("crudService", function ($http) { this.ObterTodosCelulares = function () { return $http.get('/api/v1/public/celulares'); } this.ObterCelularPorId = function (id) { return $http.get('/api/v1/public/celular/' + id); } this.AtualizarCelular = function (celular) { var response = $http({ method: 'put', url: '/api/v1/public/putCelular', data: JSON.stringify(celular), dataType: "json" }); return response; } this.AdicionarCelular = function (celular) { var response = $http({ method: 'post', url: '/api/v1/public/postCelular', data: JSON.stringify(celular), dataType: "json" }); return response; } this.RemoverCelular = function (id) { return $http.delete('/api/v1/public/deleteCelular/' + id); } }); app.controller("crudController", function ($scope, crudService) { $scope.divCelular = false; obterTodosCelulares(); function obterTodosCelulares() { var celularesData = crudService.ObterTodosCelulares(); celularesData.then(function (celular) { $scope.celulares = celular.data; }, function () { toastr["error"]("提取手机时出错", "手机商店") }) } $scope.removerCelular = function (celular) { var celularData = crudService.RemoverCelular(celular.Id); celularData.then(function (data) { if (data.status == 200) { toastr["success"]("手机删除成功!", "Celulares Store") } obterTodosCelulares(); }, function () { toastr["error"]("删除时出错", "手机商店") }) } $scope.obterCelularPorId = function (celular) { var celularData = crudService.ObterCelularPorId(celular.Id); celularData.then(function (_celular) { $scope.celular = _celular.data; $scope.celularId = celular.Id; $scope.Marca = celular.Marca; $scope.Modelo = celular.Modelo; $scope.Cor = celular.Cor; $scope.TipoChip = celular.TipoChip; $scope.MemoriaInterna = celular.MemoriaInterna; $scope.Action = "AtualizarCelular"; $scope.divCelular = true; }, function () { toastr["error"]("加载您的手机时出错", "Celulares Store") }); } $scope.AdicionarAtualizarCelular = function () { var celular = { Marca: $scope.Marca, Modelo: $scope.Modelo, Cor: $scope.Cor, TipoChip: $scope.TipoChip, MemoriaInterna: $scope.MemoriaInterna }; var valorAcao = $scope.Action; if (valorAcao == "AtualizarCelular") { celular.Id = $scope.celularId; var celularData = crudService.AtualizarCelular(celular); celularData.then(function (data) { obterTodosCelulares(); $scope.divCelular = false; if (data.status == 200) { toastr["success"]("手机改变成功!", "Celulares Store"); } }, function () { toastr["error"]("错误更新!", "Celulares Store"); }); } else { var celularData = crudService.AdicionarCelular(celular); celularData.then(function (data) { obterTodosCelulares(); if (data.status == 200) { toastr["success"]("手机成功注册!", "Celulares Store"); } $scope.divCelular = false; }, function () { toastr["error"]("错误包括!", "Celulares Store"); }); } } $scope.incluirCelularDiv = function () { limparCampos(); $scope.Action = "AdicionarCelular"; $scope.divCelular = true; } $scope.Cancelar = function () { $scope.divCelular = false; }; function limparCampos() { $scope.celularId = ""; $scope.Marca = ""; $scope.Modelo = ""; $scope.Cor = ""; $scope.TipoChip = ""; $scope.MemoriaInterna = ""; } }); </script>

_Layout.cshtml

  1. <!DOCTYPE html>
  2. <html ng-app="crudApp">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>@ViewBag.Title - My ASP.NET Application</title>
  7. @Styles.Render("~/Content/css")
  8. @Styles.Render("~/Content/toastr")
  9. @Scripts.Render("~/bundles/modernizr")
  10. @Scripts.Render("~/bundles/jquery")
  11. @*@Scripts.Render("~/bundles/angular")
  12. @Scripts.Render("~/bundles/customJs")
  13. @Scripts.Render("~/bundles/toastrjs")*@
  14. @Scripts.Render("~/bundles/bootstrap")
  15. @RenderSection("scripts", required: false)
  16. </head>
  17. <body>
  18. <div class="navbar navbar-inverse navbar-fixed-top">
  19. <div class="container">
  20. <div class="navbar-header">
  21. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
  22. <span class="icon-bar"></span>
  23. <span class="icon-bar"></span>
  24. <span class="icon-bar"></span>
  25. </button>
  26. @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
  27. </div>
  28. <div class="navbar-collapse collapse">
  29. <ul class="nav navbar-nav">
  30. <li>@Html.ActionLink("Home", "Index", "Home")</li>
  31. <li>@Html.ActionLink("About", "About", "Home")</li>
  32. <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
  33. </ul>
  34. </div>
  35. </div>
  36. </div>
  37. <div class="container body-content">
  38. @RenderBody()
  39. <hr />
  40. <footer>
  41. <p>© @DateTime.Now.Year - My ASP.NET Application</p>
  42. </footer>
  43. </div>
  44. </body>
  45. </html>

运行如图:

这里写图片描述

发表评论

表情:
评论列表 (有 0 条评论,379人围观)

还没有评论,来说两句吧...

相关阅读