原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加

  ASP.NET MVC+EF框架+EasyUI实现权限管系列

  (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装 

    (5):前台Jquery easyUI实现   (6):EF上下文实例管理   (7):DBSession的封装   (8):DBSession线程内唯一 

    (9):TT摸版的学习   (10):VSS源代码管理  (11):验证码实现和底层修改  (12):实现用户异步登录和T4模板

     (13):权限设计  (14):主框架搭建  (15):权限数据库模型和用户登录详细错误

  前言:前篇博客我们写了一下登录出现详细错误的简单代码,大家是不是感觉很简单呢,其实我感觉也是,但是这也是别人提出来的需求,所以我就顺便写了,现在这样的话我感觉我们是写的很慢,但是我写的足够详细了,也就是基本在一步一步走出精彩的教怎么去写,所以我一直说这个系列适合从开篇开始看,然后一直看结束,这样的话我们就会收获很多东西,但是我现在想我是写仔细点还是

1. 类库架构扩展

  (1)如果大家看我的这个系列的话,看到这里的时候,大家可以看到我的解决方案还是各个类库都显示在下面,如图所示:

  

  (2)那么如上图所示的话,大家有没有感觉到非常的多呢,当然了我相信大部分感觉不来,因为我的这个项目不是一个大项目,它所涉及到的类库也就这么6个,但是大家可以想象一下,如果你的类库是100多个,200多个甚至更多呢?那么我们这样存放的话是不是感觉很乱呢,所以VS为我们提供了一个虚拟的文件夹(文件夹本身不存在,只在VS下面显示的是文件夹,如果你打开项目的存放位置,发现没有这些文件夹),所以我们在解决方案上面右击添加一个新建解决方案文件夹,这样就能实现我说的上面的功能,那么修改后的架构如图所示:

    

  (3)Implement虚拟文件夹,存放的是实现业务逻辑层和数据库访问层的实现类

  (4)InterFace 虚拟文件夹,存放的是实现业务逻辑层和数据库访问层的实现接口

  (5)Model 虚拟文件夹,存放的是公用类和实体框架的东西。

2.在一个固定的文件夹下面生成DLL文件

  (1)首先我们为什么要在一个固定的文件夹下面生成DLL文件呢?向我们前面的项目写法那样不是也挺好的吗,当然这样还是有这样的好处了,请听我慢慢说来。

  (2)如果是小项目的话我们按照上面所述的那样是可以了,但是如果我们的项目是很多的,有几十个几百个呢?那么我们上面的那种严重不行,因为其中的一两个项目生成不过去,那么你的解决方案也就会生成不过去,那么我们现在希望有一两个项目生成不过去,但是我们的解决方案还是能生成过去,这样的话我们就产生了下面的解决方案。

  (3)比如说:我们的项目BLL层依赖DAL层,那么这时候即使DAL层生成不过去,我们也要求BLL层能够生成过去,但是我们如果直接添加项目引用的话肯定是不行的,因为如果添加项目引用的话我们如果生产BLL层的话他会先去生成DAL层,但是DAL层会报错,所以解决方案生成会失败。

  (4)那么怎么解决呢?首先在我们解决方案下面新建一个文件夹Lib,就是专门来存放所有的DLL文件。这时候我们到所有的类库的属性里面去修改一些内容,右键单击各个类库的属性,选择生成,然后修改输出路径(输出DLL文件到指定的文件夹下面)到刚才我们新建的那个文件夹下面,然后保存掉项目,然后在去文件夹下面检查一下即可,如图所示:

    

  (5)最后我们将所有的类库都按照上面所说的格式进行修改,然后我们可以去看看我们建立的那个文件夹下面的东西,如图所示:

    

  (6)那么这时候我们项目如果想要添加引用的话我们可以直接去这个文件夹下面添加引用,而不用去各个项目中添加引用了,这样我们就解决了当前的事情,从现在开始我们整个项目的基础基本都已经完事了,我们可以开始写前台所有的实现信息了,最后我们将我们今天实现的内容进行签入到源代码管理器。

3.用户添加实现的总体介绍

  (1)根据上面所说,到这里我们就开始实现用户的功能了,还是一句话,用户的功能我会写的稍微详细点,后面还有角色和权限大家懂的,就不说了,那么下面我们还是直接上图看:

  (2)这里的用户添加我们使用的是easyUI的控件来打造的,下面如果我们开发用户添加的话我们应该分成几个步骤来实现呢?下面我们说一下:首先就是界面的搭建,我们大家已经看到了easyUI搭建的界面,其次就是Jquery发送异步请求的代码,最后就是我们项目主要的代码,那就是如何实现功能,下面我们就根据这三点来实现用户添加这个功能。

4.实现用户添加的步骤

  (1)使用easyUI搭建界面,前面我们已经说了引用easyUI的东西,最后的HTML代码如下:

 <!--------------------------添加用户信息的弹出层---------------------------->

     <div id="DivAddUser" class="easyui-dialog" style="width:580px;height:400px;padding:10px 20px"

             closed="true" resizable="true" modal="true" buttons="#dlg-buttons">

         <form id="ff" method="post" novalidate="novalidate">

             <fieldset>

                 <legend>用户必填信息</legend>

                 <table id="tblAdd">

                     <tr>

                         <td><label for="UserName">登录名:</label></td>

                         <td>

                             <input class="easyui-validatebox" type="text" id="UserName" name="UserName" data-options="required:true,validType:'length[1,32]'" />

                         </td>          

                         <td><label for="RealName">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;真实姓名:</label></td>

                         <td>

                             <input class="easyui-validatebox" type="text" id="RealName" name="RealName"  data-options="required:true,validType:'length[1,200]'" />

                         </td>

                     </tr>

                     <tr>

                         <td><label for="UserPassword">密码:</label></td>

                         <td>

                             <input class="easyui-validatebox" type="text" id="UserPassword" name="UserPassword" data-options="required:true,validType:'length[1,200]'" />

                         </td>

                         <td><label for="OKUserPassword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;确认密码:</label></td>

                         <td>

                             <input class="easyui-validatebox" type="text" id="OKUserPassword" name="OKUserPassword" data-options="required:true" validType="equalTo['UserPassword']" invalidMessage="两次输入的密码不匹配" />

                         </td>

                     </tr>

                 </table>

             </fieldset>

             <br />

             <fieldset>

                 <legend>用户选填信息</legend>

                 <table id="tblAdd1">

                     <tr>

                         <td><label for="Email">EMail:</label></td>

                         <td>

                             <input class="easyui-validatebox" type="text" id="Email" name="Email"  data-options="validType:'email'"/>

                         </td>

                         <td><label for="SecurityLevel">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;安全级别:</label></td>

                         <td>

                             <select id="SecurityLevel" class="easyui-combobox" style="width:154px;" name="SecurityLevel" data-options="required:true">

                                 <option value=""></option>

                                 <option value=""></option>

                                 <option value=""></option>

                                 <option value=""></option>

                                 <option value=""></option>

                                 <option value=""></option>

                                 <option value=""></option>

                                 <option value=""></option>

                                 <option value=""></option>

                                 <option value=""></option>

                             </select>

                         </td>

                     </tr>

                     <tr>

                         <td><label for="Gender">性别:</label></td>

                         <td>

                             <input  class="easyui-validatebox" type="radio" name="Gender" id="Boy" value="男" checked="checked" />男&nbsp;&nbsp;

                             <input  class="easyui-validatebox" type="radio" name="Gender" id="Girl" value="女" />女&nbsp;&nbsp;

                             <input  class="easyui-validatebox" type="radio" name="Gender" id="No" value="未知" />未知

                         </td>

                          <td><label for="Birthday">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;出生日期:</label></td>

                         <td>

                             <input id="Birthday" style="width:154px;" class="easyui-datebox" required="required" name="Birthday" />

                         </td>

                     </tr>

                     <tr>

                         <td><label for="Mobile">手机号码:</label></td>

                         <td>

                             <input class="easyui-numberbox" type="text" id="Mobile" name="Mobile"/>

                         </td>

                         <td><label for="Telephone">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;电话号码:</label></td>

                         <td>

                             <input class="easyui-numberbox" type="text" id="Telephone" name="Telephone"/>

                         </td>

                     </tr>

                     <tr>

                         <td><label for="QICQ">QQ号码:</label></td>

                         <td>

                             <input class="easyui-numberbox" type="text" id="QICQ" name="QICQ" />

                         </td>

                           <td><label for="SortCode">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;排序码:</label></td>

                         <td>

                             <input class="easyui-validatebox" type="text" id="SortCode" name="SortCode" />

                         </td>

                     </tr>

                     <tr>

                         <td><label for="Description">备注信息:</label></td>

                         <td colspan="">

                             <textarea  style="height:50px; width:406px;" id="Description" name="Description" ></textarea>

                         </td>

                     </tr>

                     <tr>

                         <td colspan="" style="text-align:center; padding-top:10px">

                             <a href="javascript:void(0)" class="easyui-linkbutton" id="btnRegist" iconcls="icon-ok" >确定</a>

                             <a href="javascript:void(0)" class="easyui-linkbutton" iconcls="icon-cancel" onclick="javascript:$('#AddUserDialog').dialog('close')">关闭</a>

                         </td>

                     </tr>

                 </table>

             </fieldset>

         </form>

     </div>

  (2)使用Jquery发送异步请求,代码如下:

 //绑定注册按钮的事件

         function bindRegisteButtonClickEvent() {

             $("#btnRegist").click(function () {

                 //判断用户的信息是否通过验证

                 var validate = $("#ff").form('validate');

                 if (validate == false) {

                     return false;

                 }

                 //获取参数传递给前台

                 var postData = {

                     UserName: $("#UserName").val(),

                     RealName: $("#RealName").val(),

                     UserPassword: $("#UserPassword").val(),

                     Email: $("#Email").val(),

                     SecurityLevel: $("#SecurityLevel").combobox('getValue'),

                     Gender: $('input[name="Gender"]:checked').val(),

                     Birthday: $("#Birthday").datebox('getValue'),

                     Mobile: $("#Mobile").val(),

                     Telephone: $("#Telephone").val(),

                     QICQ: $("#QICQ").val(),

                     SortCode: $("#SortCode").val(),

                     Description: $("#Description").val()

                 };

                 //发送异步请求到后台保存用户数据

                 $.post("/UserInfo/RegisterUser", postData, function (data) {

                     if (data = "OK") {

                         //添加成功  1.关闭弹出层,2.刷新DataGird

                         alert("添加成功");

                         $("#DivAddUser").dialog("close");

                         $("#test").datagrid("reload");

                     }

                     else {

                         alert("添加失败,请您检查");

                     }

                 });

             });

         }

  (3)控制器实现对用户的添加,控制器中的代码如下:

 public ActionResult RegisterUser(BaseUser userInfo)

         {

             //首先保存一些需要录入数据库的信息

             userInfo.Code = Guid.NewGuid().ToString();  //随机产生的一些数据

             userInfo.QuickQuery = userInfo.UserName;   //获取数据的查询码

             userInfo.UserFrom = "添加";               //用户来源

             userInfo.Lang = "汉语";                   //默认系统识别的是汉语

             userInfo.IsStaff = (Int32?)StaffEnum.OK;         //默认是职员

             userInfo.IsVisible = (Int32?)VisibleEnum.OK;     //默认显示信息

             userInfo.Enabled =(Int32?)EnabledEnum.OK;       //默认用户有效

             userInfo.AuditStatus ="已审核";         //默认添加的用户已经经过审核

             userInfo.DeletionStateCode = (Int32?)DeletionStateCodeEnum.Normal;    //默认没有伪删除

             userInfo.CreateOn = DateTime.Parse(DateTime.Now.ToString());     //默认创建用户日期

             BaseUser user = Session["UserInfo"] as BaseUser;

             userInfo.CreateUserID = user.Code;   //获取添加此用户的管理者的ID

             userInfo.CreateBy = user.UserName;//获取添加此用户的管理者的名称

             //执行添加用户的代码

             _userInfoService.AddEntity(userInfo);

             return Content("OK");

        }

5.小结

  (1)到这里我们用户的添加功能就实现了,但是还有很多的问题我们需要注意,一些简单的Bug或者验证等我明天在于大家说,这篇博客的篇幅已经很长了,不能再长了,希望大家理解,如果大家有什么疑问的话可以留言,谢谢你的观看。

  (2)最后上一张添加成功的图纸给大家看看,如图所示:

    

  (3)好了,大家都早点休息吧,好的身体是成功的一半!

.NET开发者博客:www.kencery.com

  Kencery返回本系列开篇

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加的更多相关文章

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理系列

    http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开 ...

  2. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

  3. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架 ...

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览  ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ...

  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   ...

  6. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

  7. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建    ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2 ...

  8. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)    ...

  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据 ...

随机推荐

  1. redis client protocol 分解

    在官方网站http://redis.io/topics/protocol我们必须redis通信协议做说明. 根据以下某些原因.我想解决redis client protocol: 1.足够了解通信协议 ...

  2. python获取的信息列表微信公共平台和用户头像

    转载注明原文地址:http://blog.csdn.net/btyh17mxy/article/details/25207889 只写模拟登陆的方式获取微信从信息和头像库列表公共平台, - 相关后,功 ...

  3. ABP-N层架构

    ABP理论学习之N层架构   返回总目录 自从写这个系列博客之后,发现很多园友还是希望有个直接运行的demo,其实在github上就有官方的demo,我直接把这demo的链接放到这里吧,另外,我分析, ...

  4. 深入理解JavaScript系列(33):设计模式之策略模式(转)

    介绍 策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户. 正文 在理解策略模式之前,我们先来一个例子,一般情况下,如果我们要做数据合法性验证,很 ...

  5. SAP ABAP规划 SY-REPID与SY-CPROG差额

    首先.它的两个解释   sy-repid is the name of the current program.  "当前程序的程序名                             ...

  6. 无需Visual Studio,5容易的 - 分为报告

    总报告设计,例如RDLC.水晶报表等.,需要安装Visual Studio.由VS提供报表设计界面设计报告,由VS设计报告.NET非常方便开发者,.但对于非开发,安装4G一个VS.并且需要Licens ...

  7. hdu 5030 Rabbit&#39;s String(后缀数组&amp;二分法)

    Rabbit's String Time Limit: 40000/20000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  8. C# 中使用WebClient 请求 https

    WebClient 请求 启用SSL的站点 时,如果站点的证书是不可信的,请求会被阻止,解决办法如下: 添加以下代码: ServicePointManager.ServerCertificateVal ...

  9. C#内存分配学习

    CLR内存分配分三大块区域:栈.GC堆.大对象堆. 一.线程堆栈(栈) 用于分配值类型实例.栈由操作系统进行管理,不受GC管理,当值类型不在其作用域(主要是指其所在函数内)时,其所占栈空间自动释放.栈 ...

  10. hdoj1010Starship Troopers (树dp,依赖背包)

    称号:hdoj1010Starship Troopers 题意:有一个军队n个人要占据m个城市,每一个城市有cap的驻扎兵力和val的珠宝,并且这m个城市的占率先后具有依赖关系,军队的每一个人能够打败 ...