1. 程式人生 > >【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(7.2) 模組管理,模組的新增、修改、刪除

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(7.2) 模組管理,模組的新增、修改、刪除

索引

簡述

今天我們來做模組管理的 新增、修改、刪除

專案準備

我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5

希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。

專案開始

重要事情說3遍:從上一篇開始,用到的新技術不多,基本都是怎麼用前面講到的,基本不怎麼貼程式碼,希望大家自己動手敲、一定要動手敲!動手敲!!動手敲!!!

先給大家貼一下效果(頁面排版稍微有點問題,還沒改,儲存模組之後 頁面應該自動重新整理一下 js 控制也沒寫 大家主要看看功能 這些小的問題 自己修改一下就行了)

一、模組詳情、新增/修改模組

我們新增一個Detail檢視 傳遞一個int? 型別的ID (如果有ID傳入 那就是展示模組詳情和修改模組,如果沒有ID傳入 那就是新建一個模組了

我們是想這樣的,檢視詳情 新增 修改,我們都用這一個頁面,如果有ID傳入,那麼我們就展示模組資訊(檢視),並且填充內容到表單(修改),如果沒有ID傳入,那就例項化一個空的模型並且填充表單(新增)

先寫一個try{}catch(){}

我們New 一個新的模組例項 傳遞給檢視頁 並初始化一些引數

因為,因為,因為,我們在Index檢視中 有個 操作 新增子模組(7.1講了 因為沒有新增許可權 所以[新增子模組] 被 Remove掉了),因為是無限級分級的,所以點選新增子模組 可以方便使用者在當前模組下新建子模組,就不用每次都要選擇上級模組和系統了

二、Detail 模組詳情檢視頁

OK,我們轉到Detail的檢視頁(大家不要糾結我的頁面樣式~~~)

1、首先,我們接收 傳遞的 實體模型

2、我們展示模組資訊,並且建立儲存表單

 

三、儲存模組

許可權的操作型別我們設為 新增和修改

我們接收傳遞過來的 實體模型 entity

1、定義變數 isEdit 例項化JsonHelper類

1  bool isEdit = false;
2  var json = new JsonHelper() { Msg = "儲存成功", Status = "n" };

2、try catch ..

1             try
2             {
3              
4             }
5             catch (Exception e)
6             {
7                 json.Msg = "儲存模組發生內部錯誤!";
8                 WriteLog(Common.Enums.enumOperator.None, "儲存模組:", e);
9             }

 3、判斷接收的實體模型是否為Null

1                 if (entity != null)
2                 {
3                     
4                 }
5                 else
6                 {
7                     json.Msg = "未找到需要儲存的模組";
8                 }

4、如果 實體模型不為NULL 我們用正則驗證模組別名是否符合規範

1                     //驗證
2                     if (!Regex.IsMatch(entity.ALIAS, @"^[A-Za-z0-9]{1,20}$"))
3                     {
4                         json.Msg = "模組別名只能以字母數字組成,長度不能超過20個字元";
5                         return Json(json);
6                     }

5、根據模組的ParentId設定模組級別

1                     //級別加1,一級模組預設0
2                     if (entity.PARENTID <= 0)
3                     {
4                         entity.LEVELS = 0;
5                     }
6                     else
7                     {
8                         entity.LEVELS = this.ModuleManage.Get(p => p.ID == entity.PARENTID).LEVELS + 1;                       
9                     }

6、如果是新增模組 則 初始化模組的建立資訊和更新資訊,否則 更新模組的更新資訊

 1                     //新增
 2                     if (entity.ID <= 0)
 3                     {
 4                         entity.CREATEDATE = DateTime.Now;
 5                         entity.CREATEUSER = this.CurrentUser.Name;
 6                         entity.UPDATEDATE = DateTime.Now;
 7                         entity.UPDATEUSER = this.CurrentUser.Name;
 8                     }
 9                     else //修改
10                     {
11                         entity.UPDATEDATE = DateTime.Now;
12                         entity.UPDATEUSER = this.CurrentUser.Name;
13                         isEdit = true;
14                     }

7、判斷模組別名同系統下是否重名、同父模組下模組名稱是否重名

 1                   //模組別名同系統下不能重複
 2                     if (this.ModuleManage.IsExist(p => p.FK_BELONGSYSTEM == entity.FK_BELONGSYSTEM && p.ALIAS == entity.ALIAS && p.ID != entity.ID))
 3                     {
 4                         json.Msg = "同系統下模組別名不能重複";
 5                         return Json(json);
 6                     }
 7                     //判斷同一個父模組下,是否重名 
 8                     if (!this.ModuleManage.IsExist(p => p.PARENTID == entity.PARENTID && p.FK_BELONGSYSTEM == entity.FK_BELONGSYSTEM && p.NAME == entity.NAME && p.ID != entity.ID))
 9                     {
10                         
11                     }
12                     else
13                     {
14                         json.Msg = "模組" + entity.NAME + "已存在,不能重複新增";
15                     }

8、執行新增或修改模組

1                        if (this.ModuleManage.SaveOrUpdate(entity, isEdit))
2                         {
3                             
4                             json.Status = "y";
5                         }
6                         else
7                         {
8                             json.Msg = "儲存失敗";
9                         }

9、如果模組修改成功,我們變更下級模組的級別

1                            //變更下級模組的級別
2                             if (isEdit)
3                             {
4                                 this.ModuleManage.MoreModifyModule(entity.ID, Convert.ToInt32(entity.LEVELS));
5                             }

這樣,新增和修改功能就完成了。

四、刪除模組

首先,我們判斷idList是否為空

 1             JsonHelper json = new JsonHelper() { Msg = "刪除模組成功", ReUrl = "", Status = "n" };
 2             try
 3             {
 4                 if (!string.IsNullOrEmpty(idList))
 5                 {
 6                     
 7                 }
 8                 else
 9                 {
10                     json.Msg = "未找到要刪除的模組";
11                 }
12                 WriteLog(Common.Enums.enumOperator.Remove, "刪除模組,結果:" + json.Msg, Common.Enums.enumLog4net.WARN);
13             }
14             catch (Exception e)
15             {
16                 json.Msg = "刪除模組發生內部錯誤!";
17                 WriteLog(Common.Enums.enumOperator.Remove, "刪除模組:", e);
18             }
19             return Json(json);

如果不為空,我們把idList轉為int 陣列 idlist1

1 var idlist1 = idList.Trim(',').Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(p => int.Parse(p)).ToList();

在執行刪除之前,我們要進行兩步判斷,首先判斷模組是否存在許可權

1                    //判斷許可權裡面有沒有
2                     if (!this.PermissionManage.IsExist(p => idlist1.Any(e => e == p.MODULEID)))
3                     {
4                         
5                     }
6                     else
7                     {
8                         json.Msg = "該模組下有許可權節點,不能刪除";
9                     }

然後判斷,模組下是否有子模組

1                         //存在子模組與否
2                         if (!this.ModuleManage.IsExist(p => idlist1.Any(e => e == p.PARENTID)))
3                         {
4                             
5                         }
6                         else
7                         {
8                             json.Msg = "該模組下有子模組,不能刪除";
9                         }

 執行刪除

1 this.ModuleManage.Delete(p => idlist1.Any(e => e == p.ID));
2 json.Status = "y";

相關推薦

無私分享入門精通ASP.NET MVC0開始一起框架專案7.2 模組管理模組新增修改刪除

索引 簡述 今天我們來做模組管理的 新增、修改、刪除 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了

無私分享入門精通ASP.NET MVC0開始一起框架專案5.3 登入功能的實現豐富資料表建立關聯

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_CODE] Script Date: 2016/5/17 9:30:01 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET

無私分享入門精通ASP.NET MVC0開始一起框架專案 10部門管理崗位管理和員工管理

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_POST_USER] Script Date: 2016/6/20 16:28:44 ******/ 4 SET ANSI_NULLS ON 5 GO

無私分享入門精通ASP.NET MVC0開始一起框架專案 12程式與資料備份

索引 簡述 程式檔案備份與資料備份 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始

無私分享入門精通ASP.NET MVC0開始一起框架專案5.4 登入功能的實現建立與登入使用者相關的介面和實現類

索引 簡述 今天我們建立幾個與登入使用者相關的資料表的介面和實現類 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了

無私分享入門精通ASP.NET MVC0開始一起框架專案 14附資料庫釋出專案

索引 簡述 總結一 整個系列其實還包括專案管理、考勤簽到、郵件、內部聊天等等,這個東西是做不完的,如果繼續還有新聞系統、靜態生成等等等等.... 其中,靜態頁生成在我的部落格中可以找到,三種方式: 第一種 就是類似網上的很多CMS一樣 採用標籤替換,但這種方式是不推薦的,特別是在我們.Net中,

無私分享入門精通ASP.NET MVC0開始一起框架專案 16原始碼分享登入功能以及UI資料庫倉儲原始碼分享

1 using Common; 2 using Service.IService; 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Web;

無私分享入門精通ASP.NET MVC0開始一起框架專案5.5 登入功能的實現完善登入功能

索引 簡述 今天我們來完善我們的登入功能 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開

無私分享入門精通ASP.NET MVC0開始一起框架專案 登入介面前端樣式和特效

很多朋友要UI,我也說過,後臺的UI就是BootStrap,網上很多的。也有朋友喜歡LZ的登入,LZ的登入介面也是網上找的,然後稍微做了下修改。 不過既然大家喜歡,那麼LZ就分享給大家。 1、登入頁面效果 2、登入頁面程式碼 1 @{ 2 Layout = null; 3

無私分享入門精通ASP.NET MVC0開始一起框架專案5.2 登入功能的實現介面注入log4net的使用

索引 簡述 前兩天事情比較多,耽誤更新了,希望大家多多包涵,今天我們繼續做我們的登入功能 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行

無私分享入門精通ASP.NET MVC0開始一起框架專案5.1 登入功能的實現開始接觸Spring IOCDI

索引 簡述 今天我們做登入,今天的東西比較多,用到了Spring的IOC和DI、介面的使用、驗證等,希望大家多多討論 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些

無私分享入門精通ASP.NET MVC0開始一起框架專案 15原始碼分享修改倉儲IRepositoryRepositoryBase

1 #region 獲取多條資料操作 2 3 /// <summary> 4 /// 返回IQueryable集合,延時載入資料 5 /// </summary> 6 /// &l

無私分享入門精通ASP.NET MVC0開始一起框架專案7.1 模組管理驗證許可權展示模組列表

索引 簡述 今天我們來做模組管理的 展示 模組列表 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。

無私分享入門精通ASP.NET MVC0開始一起框架專案9 角色管理分配許可權

索引 簡述 今天我們來做角色的管理 和 角色許可權分配 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解

無私分享入門精通ASP.NET MVC0開始一起框架專案1搭建MVC環境 註冊區域

索引 簡述 從今天開始,我們從0開始搭建一個框架,並且完成一個任務管理系統的專案。這並不是什麼大專案,只是對於不熟悉MVC以及不熟悉面向介面開發和依賴注入的朋友們有所啟發,因為是從0開始,所以有些地方比較囉嗦,希望大家理解! 希望新手朋友們拋棄“拿來主義”,動手跟著一步一步的做,當做完這個框架和專案

無私分享入門精通ASP.NET MVC0開始一起框架專案6 控制器基類 主要登入使用者許可權認證日誌記錄等工作

索引 簡述 今天我們來寫一個控制器基類 主要做登入使用者、許可權認證、日誌記錄等工作 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,

無私分享入門精通ASP.NET MVC0開始一起框架專案8 許可權管理自定義許可權擴充套件許可權

索引 簡述 今天我們來做許可權的管理,這篇比較多 希望新手朋友慢慢消化 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的

無私分享入門精通ASP.NET MVC0開始一起框架專案 13客戶管理

索引 簡述 簡單的客戶管理 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始 一、資料

無私分享入門精通ASP.NET MVC0開始一起框架專案3公共基礎資料操作類 RepositoryBase

索引 簡述 今天我們寫一個基礎資料的操作類,如果裡面有大家不理解的地方,可採取兩種方式,第一:提出來,第二:會用就行。這個類呢我一般不去修改它,因為基礎操作類,大家也可以直接拷貝到自己的專案中。 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大

無私分享入門精通ASP.NET MVC0開始一起框架專案 11檔案管理

索引 簡述 檔案管理,這個比較雞肋 但是有些方法 大家可以參考下 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,