索引

【无私分享:从入门到精通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) 模块管理,模块的添加、修改、删除...相关推荐

  1. 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(8) 权限管理,自定义权限,扩展权限...

    索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引 简述 今天我们来做权限的管理,这篇比较多 希望新手朋友慢慢消化 项目准备 我们用的工具是:VS 2013 ...

  2. 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.5) 登录功能的实现,完善登录功能...

    索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引 简述 今天我们来完善我们的登录功能 项目准备 我们用的工具是:VS 2013 + SqlServer 20 ...

  3. 《精通 ASP.NET MVC 3 框架(第三版)》----第2章 准备工作 2.1 准备工作站

    本节书摘来自异步社区<精通 ASP.NET MVC 3 框架(第三版)>一书中的第2章,第1节,作者: [美]Adam Freeman , Steven Standerson,译者: 林逸 ...

  4. 《精通 ASP.NET MVC 5》----1.8 本书所需的软件

    本节书摘来自异步社区<精通 ASP.NET MVC 5>一书中的第1章,第1.8节,作者: [美]Adam Freeman(弗瑞曼 A.),译者: 张成彬 , 徐燕萍 , 李萍 , 林逸 ...

  5. 《从零开始学习ASP.NET MVC 1.0》-开天辟地入门篇

    <从零开始学习ASP.NET MVC 1.0> 文章导航 (一) 开天辟地入门篇 (二) 识别URL的Routing组件 (三) Controller/Action 深入解析与应用实例 ( ...

  6. 《精通 ASP.NET MVC 5》----1.5 本书的结构

    本节书摘来自异步社区<精通 ASP.NET MVC 5>一书中的第1章,第1.5节,作者: [美]Adam Freeman(弗瑞曼 A.),译者: 张成彬 , 徐燕萍 , 李萍 , 林逸 ...

  7. 《精通 ASP.NET MVC 4》----1.3 ASP.NET MVC的关键优点

    本节书摘来自异步社区<精通 ASP.NET MVC 4>一书中的第1章,第1.3节,作者: [美]Adam Freeman ,译者: 李萍 , 徐燕萍 , 林逸 , 更多章节内容可以访问云 ...

  8. 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 ...

  9. 从零开始学习ASP.NET MVC 1.0 (一)

    从零开始学习ASP.NET MVC 1.0 (一) MVC1.0下载地址:http://www.microsoft.com/download/en/details.aspx?id=5388 博客园:h ...

最新文章

  1. swustoj?id=15 A+B
  2. 剑指offer 算法 (时间空间效率的平衡)
  3. ubuntu14.04下的NVIDIA Tesla K80显卡驱动的安装教程
  4. Angr 初体验之探索口令
  5. linux svn cleanup 用法,SVN命令之清理命令(clean up)的功能及使用技巧
  6. 城阳三中2021高考成绩查询入口,2021年青岛城阳区中考录取分数线公布
  7. Python—Scrapy爬取京东商城
  8. IDEA全局配置图文教程
  9. 闭环控制步进电机对比传统开环控制的优点
  10. Authing 背后的计算哲学
  11. 关于机器人坐标系变换的笔记
  12. win10如何修改系统文件夹名字
  13. HTTP ---code错误状态码大全
  14. 【均衡器】LS均衡器,DEF均衡器以及LMMSE均衡器的误码率性能对比仿真
  15. 双位置继电器ST2-2L/AC220V
  16. 生活流水账(转载老婆的文章)
  17. Lind.DDD.LindMQ的一些想法
  18. 【Windows任务管理器硬盘监控功能异常】任务管理器磁盘读写功能异常,无任何数据
  19. 论文解读:SentiPrompt: Sentiment Knowledge Enhanced Prompt-Tuning for Aspect-Based Sentiment Analysis
  20. 十句让生活更美好的英语箴言

热门文章

  1. 通信upf是什么意思_5G给边缘计算带来了什么?
  2. Xcode11 上传苹果卡在Authenticating with the iTunes store 或者transpoter上传卡在正在验证 APP - 正在通过App Store进行认证
  3. 复杂密码生成工具apg
  4. Xamarin中VS无法连接Mac系统的解决办法
  5. C#开发Unity游戏教程之使用脚本变量
  6. python中不能使用索引运算的是_Python数据分析之Pandas库(笔记)
  7. html 如何实现一条竖线边上有 刻度_如何用低技术实现高性能
  8. iOS限定UITextField的输入格式
  9. 三步快删EXCEL工作表下面出现1000多万行无用数据或者空白行(空值行)
  10. Face ID 上手体验信息汇总:面部解锁流畅,原理移植AR让人憧憬