聲明:本系列為原創,分享本人現用框架,未經本人同意,禁止轉載!http://yuangang.cnblogs.com 希望大家好好一步一步做,所有的技術和項目,都毫無保留的提供,希望大家能自己跟著做一套,還有,請大家放心,只要大家喜歡,有人需要,絕對不會爛尾,我會堅持寫完~ 如果你感覺文章有幫助,點 ...
聲明:本系列為原創,分享本人現用框架,未經本人同意,禁止轉載!http://yuangang.cnblogs.com
希望大家好好一步一步做,所有的技術和項目,都毫無保留的提供,希望大家能自己跟著做一套,還有,請大家放心,只要大家喜歡,有人需要,絕對不會爛尾,我會堅持寫完~
如果你感覺文章有幫助,點一下推薦,讓更多的朋友參與進來,也是對本人勞動成果的鼓勵,謝謝大家!由於還要工作,所以基本都是犧牲午休時間來寫博客的,寫博客呢不是簡單的Ctrl+C、Ctrl+V,我是要挨著做一遍的,這也是對大家負責,所以有些時候更新不及時,或者問題沒有及時解答,希望大家諒解,再次感謝大家!!
因為我引用了許多以前積累的類庫,所以有些東西是重覆的(後來更新),有些東西是過時的,包括我寫的代碼,希望大家不要純粹的複製,取其精華去其糟粕>_<。
在項目最後我會把每個部分、每個階段的Demo提供下載給大家,其實,如果跟著做完,並且剔除掉了我代碼不好的地方,你也不需要這些Demo了,是吧~
索引
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(1)搭建MVC環境 註冊區域
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(2)創建資料庫和數據模型
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(3)公共基礎數據操作類 RepositoryBase
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(4)對前面的一些問題彙總和總結
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(5.1) 登錄功能的實現,開始接觸Spring IOC、DI
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(5.2) 登錄功能的實現,介面註入、log4net的使用
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(5.3) 登錄功能的實現,豐富數據表、建立關聯
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(5.4) 登錄功能的實現,創建與登錄用戶相關的介面和實現類
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(5.5) 登錄功能的實現,完善登錄功能
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(6) 控制器基類 主要做登錄用戶、許可權認證、日誌記錄等工作
【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(7.1) 模塊管理,驗證許可權,展示模塊列表
簡述
今天我們來做模塊管理的 添加、修改、刪除
項目準備
我們用的工具是: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";
原創文章 轉載請尊重勞動成果 http://yuangang.cnblogs.com