【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.2) 模块管理,模块的添加、修改、删除...
索引
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目 目录索引
简述
今天我们来做模块管理的 添加、修改、删除
项目准备
我们用的工具是: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
转载于:https://www.cnblogs.com/yuangang/p/5543442.html
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.2) 模块管理,模块的添加、修改、删除...相关推荐
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(8) 权限管理,自定义权限,扩展权限...
索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引 简述 今天我们来做权限的管理,这篇比较多 希望新手朋友慢慢消化 项目准备 我们用的工具是:VS 2013 ...
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.5) 登录功能的实现,完善登录功能...
索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引 简述 今天我们来完善我们的登录功能 项目准备 我们用的工具是:VS 2013 + SqlServer 20 ...
- 《精通 ASP.NET MVC 3 框架(第三版)》----第2章 准备工作 2.1 准备工作站
本节书摘来自异步社区<精通 ASP.NET MVC 3 框架(第三版)>一书中的第2章,第1节,作者: [美]Adam Freeman , Steven Standerson,译者: 林逸 ...
- 《精通 ASP.NET MVC 5》----1.8 本书所需的软件
本节书摘来自异步社区<精通 ASP.NET MVC 5>一书中的第1章,第1.8节,作者: [美]Adam Freeman(弗瑞曼 A.),译者: 张成彬 , 徐燕萍 , 李萍 , 林逸 ...
- 《从零开始学习ASP.NET MVC 1.0》-开天辟地入门篇
<从零开始学习ASP.NET MVC 1.0> 文章导航 (一) 开天辟地入门篇 (二) 识别URL的Routing组件 (三) Controller/Action 深入解析与应用实例 ( ...
- 《精通 ASP.NET MVC 5》----1.5 本书的结构
本节书摘来自异步社区<精通 ASP.NET MVC 5>一书中的第1章,第1.5节,作者: [美]Adam Freeman(弗瑞曼 A.),译者: 张成彬 , 徐燕萍 , 李萍 , 林逸 ...
- 《精通 ASP.NET MVC 4》----1.3 ASP.NET MVC的关键优点
本节书摘来自异步社区<精通 ASP.NET MVC 4>一书中的第1章,第1.3节,作者: [美]Adam Freeman ,译者: 李萍 , 徐燕萍 , 林逸 , 更多章节内容可以访问云 ...
- ASP.NET MVC 3.0(一): MVC 3.0 的新特性 摘要
ASP.NET MVC 3.0(一): MVC 3.0 的新特性 摘要 ASP.NET MVC 3.0(二): MVC的概念及MVC 3.0开发环境 ASP.NET MVC 3.0(三): 初识MVC ...
- 从零开始学习ASP.NET MVC 1.0 (一)
从零开始学习ASP.NET MVC 1.0 (一) MVC1.0下载地址:http://www.microsoft.com/download/en/details.aspx?id=5388 博客园:h ...
最新文章
- swustoj?id=15 A+B
- 剑指offer 算法 (时间空间效率的平衡)
- ubuntu14.04下的NVIDIA Tesla K80显卡驱动的安装教程
- Angr 初体验之探索口令
- linux svn cleanup 用法,SVN命令之清理命令(clean up)的功能及使用技巧
- 城阳三中2021高考成绩查询入口,2021年青岛城阳区中考录取分数线公布
- Python—Scrapy爬取京东商城
- IDEA全局配置图文教程
- 闭环控制步进电机对比传统开环控制的优点
- Authing 背后的计算哲学
- 关于机器人坐标系变换的笔记
- win10如何修改系统文件夹名字
- HTTP ---code错误状态码大全
- 【均衡器】LS均衡器,DEF均衡器以及LMMSE均衡器的误码率性能对比仿真
- 双位置继电器ST2-2L/AC220V
- 生活流水账(转载老婆的文章)
- Lind.DDD.LindMQ的一些想法
- 【Windows任务管理器硬盘监控功能异常】任务管理器磁盘读写功能异常,无任何数据
- 论文解读:SentiPrompt: Sentiment Knowledge Enhanced Prompt-Tuning for Aspect-Based Sentiment Analysis
- 十句让生活更美好的英语箴言
热门文章
- 通信upf是什么意思_5G给边缘计算带来了什么?
- Xcode11 上传苹果卡在Authenticating with the iTunes store 或者transpoter上传卡在正在验证 APP - 正在通过App Store进行认证
- 复杂密码生成工具apg
- Xamarin中VS无法连接Mac系统的解决办法
- C#开发Unity游戏教程之使用脚本变量
- python中不能使用索引运算的是_Python数据分析之Pandas库(笔记)
- html 如何实现一条竖线边上有 刻度_如何用低技术实现高性能
- iOS限定UITextField的输入格式
- 三步快删EXCEL工作表下面出现1000多万行无用数据或者空白行(空值行)
- Face ID 上手体验信息汇总:面部解锁流畅,原理移植AR让人憧憬