原文: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. 经纬Zhang英拉垫背的企业家VC没有到这种地步这么卑鄙

    经纬的合伙人张颖前不久发了一篇名为<泡沫就在那里------致经纬系CEO的一封信>,这篇文章所提到的泡沫论在业界引发了强烈的反响,随后有评论觉得,这明明是VC(风险投资)们自己的危机,为 ...

  2. Android的第二次增加SurfaceView基本使用

    本文来源于http://blog.csdn.net/hellogv/ ,引用必须注明出处. 上次介绍MediaPlayer的时候略微介绍了SurfaceView,SurfaceView因为能够直接从内 ...

  3. iis虚拟目录引发的路径问题

    在iis上把web程序配置成站点是ok的,但配置成虚拟目录,就会发现 图片路径不能,样式不能加载,链接出错. 解决方案: 1,上传图片  ~/upload 2,cs程序,链接跳转,请用~/index. ...

  4. sql分隔字符串数组

    declare @relation_code nvarchar(1024) set @relation_code = '#10000#10002' set @relation_code=substri ...

  5. 客户端上显示csdn上的各类别下的的文章列表 (制作csdn app 三)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23597229 今天将在Android 使用Fragment,ViewPagerI ...

  6. 【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见

    内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是 ...

  7. java学习笔记2015-6-6

    类与对象  (概念型  Demo演示)    面向对象   java  C++   包裹  承受  多态    分类  物    面向过程   C    结构体 1.获取用户输入  2.逻辑推断   ...

  8. Android UI法宝的设计资源的开发

    UI再次推荐设计资源.纯干,没有水~ 各种背景资源库 http://subtlepatterns.com/ ICON资源 https://www.iconfinder.com/ watermark/2 ...

  9. Hadoop入门进阶步步高(五)-搭建Hadoop集群

    五.搭建Hadoop集群 上面的步骤,确认了单机能够运行Hadoop的伪分布运行,真正的分布式运行无非也就是多几台slave机器而已,配置方面的有一点点差别,配置起来就很easy了. 1.准备三台se ...

  10. 从xcode 6 上传 App Store

    2014苹果结束了大会,ios8公布.可怜的苹果开发人员又要開始伤脑筋了. 比方提交新产品的那个iTunes connect体验就做得极烂.并且这还是本菜鸟的第一次上线提交.折寿啊 一.制作证书.ap ...