zoukankan      html  css  js  c++  java
  • 【无私分享:从入门到精通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

  • 相关阅读:
    《JAVA高并发编程详解》-Thread start方法的源码
    《JAVA高并发编程详解》-Thread对象的启动
    作为程序员,我建议你学会写作
    【灵异短篇】这个夜晚有点凉
    JAVA中for与while关于内存的细节问题
    通过本质看现象:关于Integer受内部初始化赋值范围限制而出现的有趣现象
    【设计模式】抽象工厂模式
    【设计模式】工厂模式
    【设计模式】单例模式
    【设计模式】基本介绍
  • 原文地址:https://www.cnblogs.com/yuangang/p/5543442.html
Copyright © 2011-2022 走看看