abp(net core)+easyui+efcore實現倉儲管理系統——展示層實現增刪改查之控制器(六)

abp(net core)+easyui+efcore實現倉儲管理系統目錄

abp(net core)+easyui+efcore實現倉儲管理系統——ABP整體介紹(一)html

abp(net core)+easyui+efcore實現倉儲管理系統——解決方案介紹(二)數據庫

abp(net core)+easyui+efcore實現倉儲管理系統——領域層建立實體(三)app

 abp(net core)+easyui+efcore實現倉儲管理系統——定義倉儲並實現 (四)async

abp(net core)+easyui+efcore實現倉儲管理系統——建立應用服務(五)函數

 

       經過前面三篇文章的介紹,咱們學習瞭如何建立實體,如何建立數據庫操做,如何建立應用服務。在上一文章中咱們在應用層實現了對數據庫的CURD操做。在本篇文章中,主要是使用常規的MVC方式來實現增刪改查的功能,經過完善Controller、View、ViewModel,以及調試修改控制器來實現展現層的增刪改查。最終實現效果以下圖:post

 

1、建立ModuleController學習

      ABP對ASP.NET Net Core MVC  Controllers進行了集成,經過ABP網站建立的項目會自動建立一個Controller基類,這個Controller基類繼承自AbpController, 咱們便可使用ABP附加給咱們的如下強大功能:網站

  • 本地化
  • 異常處理
  • 對返回的JsonResult進行包裝
  • 審計日誌
  • 權限認證([AbpMvcAuthorize]特性)
  • 工做單元(默認未開啓,經過添加[UnitOfWork]開啓)

      咱們建立的ABP.TPLMS項目,也一樣建立了一個控制器基類,具體位置以下圖。ui

 

      1. 在Visual Studio 2017的「解決方案資源管理器」中,右鍵單擊在領域層「ABP.TPLMS.Web.Mvc」項目中的Controller目錄。 選擇「添加」 > 「新建項…」。以下圖。spa

 

    2. 在彈出對話框「添加新項-ABP.TPLMS.Web.Mvc」中選擇「控制器類」,而後在名稱輸入框中輸入「ModuleController」,而後點擊「添加」按鈕。以下圖。

 

      3.在Visual Studio 2017中打開咱們剛纔建立ModuleController.cs,並繼承自TPLMSControllerBase,並增長列表與修改方法。經過構造函數注入對應用服務的依賴。具體代碼以下。

 

using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Abp.Application.Services.Dto; using Abp.AspNetCore.Mvc.Authorization; using Abp.Runtime.Validation; using ABP.TPLMS.Controllers; using ABP.TPLMS.Modules; using ABP.TPLMS.Modules.Dto; using ABP.TPLMS.Web.Models.Module; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; // For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace ABP.TPLMS.Web.Controllers { [AbpMvcAuthorize] 
    public class ModuleController : TPLMSControllerBase { // GET: /<controller>/
        public IActionResult Index() { var output = _moduleAppService.GetAllAsync(); var model = new EditModuleModalViewModel { Module = AutoMapper.Mapper.Map<CreateUpdateModuleDto>(output.Result.Items.First()), Modules = output.Result.Items }; return View(model); } private readonly IModuleAppService _moduleAppService; public ModuleController(IModuleAppService moduleAppService) { _moduleAppService = moduleAppService; } [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(EditModuleModalViewModel updateDto) { if (updateDto == null) { return NotFound(); } if (updateDto.Module == null) { return NotFound(); } _moduleAppService.CreateAsync(updateDto.Module); return RedirectToAction(nameof(Index)); } public IActionResult Create() { return View(); } [HttpPost] [DisableValidation] public ActionResult Edit(int id,EditModuleModalViewModel updateDto) { if (id != updateDto.Module.Id) { return NotFound(); } if (ModelState.IsValid) { try { var module= updateDto.Module; _moduleAppService.UpdateAsync(module); } catch (DbUpdateConcurrencyException) { if (!DtoExists(updateDto.Module.Id)) { return NotFound(); } else { throw; } } return RedirectToAction(nameof(Index)); } return View(updateDto); 
 } private bool DtoExists(long id) { return _moduleAppService.GetAllAsync().Result.Items.Any(e => e.Id == id); } // GET: Cargoes/Edit/5
        public IActionResult Edit(int? id) { if (id == null) { return NotFound(); } var module =  _moduleAppService.GetAllAsync().Result.Items.SingleOrDefault(m => m.Id == id); if (module == null) { return NotFound(); } var model = new EditModuleModalViewModel { Module = AutoMapper.Mapper.Map<CreateUpdateModuleDto>(module) }; return View(model); //return Ok(cargo.Result);
 } // GET: Cargoes/Delete/5
        public  IActionResult Delete(int? id) { if (id == null) { return NotFound(); } var module = _moduleAppService.GetAllAsync().Result.Items.SingleOrDefault(m => m.Id == id); if (module == null) { return NotFound(); } var model = new EditModuleModalViewModel { Module = AutoMapper.Mapper.Map<CreateUpdateModuleDto>(module) }; return View(model); } // POST: Cargoes/Delete/5
        [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public async Task<IActionResult> DeleteConfirmed(int id) { try { await _moduleAppService.DeleteAsync(id); } catch (Exception ex) { return View(ex.Message); //throw;
 } return RedirectToAction(nameof(Index)); } } }
相關文章
相關標籤/搜索