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

简介: 原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加  ASP.NET MVC+EF框架+EasyUI实现权限管系列   (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编...
原文: 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代码如下:

  1 <!--------------------------添加用户信息的弹出层---------------------------->
  2 
  3     <div id="DivAddUser" class="easyui-dialog" style="width:580px;height:400px;padding:10px 20px"
  4 
  5             closed="true" resizable="true" modal="true" buttons="#dlg-buttons">
  6 
  7         <form id="ff" method="post" novalidate="novalidate">
  8 
  9             <fieldset>
 10 
 11                 <legend>用户必填信息</legend>
 12 
 13                 <table id="tblAdd">
 14 
 15                     <tr>
 16 
 17                         <td><label for="UserName">登录名:</label></td>
 18 
 19                         <td>
 20 
 21                             <input class="easyui-validatebox" type="text" id="UserName" name="UserName" data-options="required:true,validType:'length[1,32]'" />
 22 
 23                         </td>          
 24 
 25                         <td><label for="RealName">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;真实姓名:</label></td>
 26 
 27                         <td>
 28 
 29                             <input class="easyui-validatebox" type="text" id="RealName" name="RealName"  data-options="required:true,validType:'length[1,200]'" />
 30 
 31                         </td>
 32 
 33                     </tr>
 34 
 35                     <tr>
 36 
 37                         <td><label for="UserPassword">密码:</label></td>
 38 
 39                         <td>
 40 
 41                             <input class="easyui-validatebox" type="text" id="UserPassword" name="UserPassword" data-options="required:true,validType:'length[1,200]'" />
 42 
 43                         </td>
 44 
 45                         <td><label for="OKUserPassword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;确认密码:</label></td>
 46 
 47                         <td>
 48 
 49                             <input class="easyui-validatebox" type="text" id="OKUserPassword" name="OKUserPassword" data-options="required:true" validType="equalTo['UserPassword']" invalidMessage="两次输入的密码不匹配" />
 50 
 51                         </td>
 52 
 53                     </tr>
 54 
 55                 </table>
 56 
 57             </fieldset>
 58 
 59             <br />
 60 
 61             <fieldset>
 62 
 63                 <legend>用户选填信息</legend>
 64 
 65                 <table id="tblAdd1">
 66 
 67                     <tr>
 68 
 69                         <td><label for="Email">EMail:</label></td>
 70 
 71                         <td>
 72 
 73                             <input class="easyui-validatebox" type="text" id="Email" name="Email"  data-options="validType:'email'"/>
 74 
 75                         </td>
 76 
 77                         <td><label for="SecurityLevel">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;安全级别:</label></td>
 78 
 79                         <td>
 80 
 81                             <select id="SecurityLevel" class="easyui-combobox" style="width:154px;" name="SecurityLevel" data-options="required:true">
 82 
 83                                 <option value="1">1</option>
 84 
 85                                 <option value="2">2</option>
 86 
 87                                 <option value="3">3</option>
 88 
 89                                 <option value="4">4</option>
 90 
 91                                 <option value="5">5</option>
 92 
 93                                 <option value="6">6</option>
 94 
 95                                 <option value="7">7</option>
 96 
 97                                 <option value="8">8</option>
 98 
 99                                 <option value="9">9</option>
100 
101                                 <option value="10">10</option>
102 
103                             </select>
104 
105                         </td>
106 
107                     </tr>
108 
109                     <tr>
110 
111                         <td><label for="Gender">性别:</label></td>
112 
113                         <td>
114 
115                             <input  class="easyui-validatebox" type="radio" name="Gender" id="Boy" value="" checked="checked" />男&nbsp;&nbsp;
116 
117                             <input  class="easyui-validatebox" type="radio" name="Gender" id="Girl" value="" />女&nbsp;&nbsp;
118 
119                             <input  class="easyui-validatebox" type="radio" name="Gender" id="No" value="未知" />未知
120 
121                         </td>
122 
123                          <td><label for="Birthday">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;出生日期:</label></td>
124 
125                         <td>
126 
127                             <input id="Birthday" style="width:154px;" class="easyui-datebox" required="required" name="Birthday" />
128 
129                         </td>
130 
131                     </tr>
132 
133                     <tr>
134 
135                         <td><label for="Mobile">手机号码:</label></td>
136 
137                         <td>
138 
139                             <input class="easyui-numberbox" type="text" id="Mobile" name="Mobile"/>
140 
141                         </td>
142 
143                         <td><label for="Telephone">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;电话号码:</label></td>
144 
145                         <td>
146 
147                             <input class="easyui-numberbox" type="text" id="Telephone" name="Telephone"/>
148 
149                         </td>
150 
151                     </tr>
152 
153                     <tr>
154 
155                         <td><label for="QICQ">QQ号码:</label></td>
156 
157                         <td>
158 
159                             <input class="easyui-numberbox" type="text" id="QICQ" name="QICQ" />
160 
161                         </td>
162 
163                           <td><label for="SortCode">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;排序码:</label></td>
164 
165                         <td>
166 
167                             <input class="easyui-validatebox" type="text" id="SortCode" name="SortCode" />
168 
169                         </td>
170 
171                     </tr>
172 
173                     <tr>
174 
175                         <td><label for="Description">备注信息:</label></td>
176 
177                         <td colspan="3">
178 
179                             <textarea  style="height:50px; width:406px;" id="Description" name="Description" ></textarea>
180 
181                         </td>
182 
183                     </tr>
184 
185                     <tr>
186 
187                         <td colspan="4" style="text-align:center; padding-top:10px">
188 
189                             <a href="javascript:void(0)" class="easyui-linkbutton" id="btnRegist" iconcls="icon-ok" >确定</a>
190 
191                             <a href="javascript:void(0)" class="easyui-linkbutton" iconcls="icon-cancel" onclick="javascript:$('#AddUserDialog').dialog('close')">关闭</a>
192 
193                         </td>
194 
195                     </tr>
196 
197                 </table>
198 
199             </fieldset>
200 
201         </form>
202 
203     </div>

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

 1 //绑定注册按钮的事件
 2 
 3         function bindRegisteButtonClickEvent() {
 4 
 5             $("#btnRegist").click(function () {
 6 
 7                 //判断用户的信息是否通过验证
 8 
 9                 var validate = $("#ff").form('validate');
10 
11                 if (validate == false) {
12 
13                     return false;
14 
15                 }
16 
17                 //获取参数传递给前台
18 
19                 var postData = {
20 
21                     UserName: $("#UserName").val(),
22 
23                     RealName: $("#RealName").val(),
24 
25                     UserPassword: $("#UserPassword").val(),
26 
27                     Email: $("#Email").val(),
28 
29                     SecurityLevel: $("#SecurityLevel").combobox('getValue'),
30 
31                     Gender: $('input[name="Gender"]:checked').val(),
32 
33                     Birthday: $("#Birthday").datebox('getValue'),
34 
35                     Mobile: $("#Mobile").val(),
36 
37                     Telephone: $("#Telephone").val(),
38 
39                     QICQ: $("#QICQ").val(),
40 
41                     SortCode: $("#SortCode").val(),
42 
43                     Description: $("#Description").val()
44 
45                 };
46 
47                 //发送异步请求到后台保存用户数据
48 
49                 $.post("/UserInfo/RegisterUser", postData, function (data) {
50 
51                     if (data = "OK") {
52 
53                         //添加成功  1.关闭弹出层,2.刷新DataGird
54 
55                         alert("添加成功");
56 
57                         $("#DivAddUser").dialog("close");
58 
59                         $("#test").datagrid("reload");
60 
61                     }
62 
63                     else {
64 
65                         alert("添加失败,请您检查");
66 
67                     }
68 
69                 });
70 
71             });
72 
73         }

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

 1 public ActionResult RegisterUser(BaseUser userInfo)
 2 
 3         {
 4 
 5             //首先保存一些需要录入数据库的信息
 6 
 7             userInfo.Code = Guid.NewGuid().ToString();  //随机产生的一些数据
 8 
 9             userInfo.QuickQuery = userInfo.UserName;   //获取数据的查询码
10 
11             userInfo.UserFrom = "添加";               //用户来源
12 
13             userInfo.Lang = "汉语";                   //默认系统识别的是汉语
14 
15             userInfo.IsStaff = (Int32?)StaffEnum.OK;         //默认是职员
16 
17             userInfo.IsVisible = (Int32?)VisibleEnum.OK;     //默认显示信息
18 
19             userInfo.Enabled =(Int32?)EnabledEnum.OK;       //默认用户有效
20 
21             userInfo.AuditStatus ="已审核";         //默认添加的用户已经经过审核
22 
23             userInfo.DeletionStateCode = (Int32?)DeletionStateCodeEnum.Normal;    //默认没有伪删除
24 
25             userInfo.CreateOn = DateTime.Parse(DateTime.Now.ToString());     //默认创建用户日期
26 
27             BaseUser user = Session["UserInfo"] as BaseUser;
28 
29             userInfo.CreateUserID = user.Code;   //获取添加此用户的管理者的ID
30 
31             userInfo.CreateBy = user.UserName;//获取添加此用户的管理者的名称
32 
33             //执行添加用户的代码
34 
35             _userInfoService.AddEntity(userInfo);
36 
37             return Content("OK");
38 
39        }

5.小结

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

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

     

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

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

 

  Kencery返回本系列开篇

 

目录
相关文章
|
12天前
|
JSON 安全 数据安全/隐私保护
从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用
【9月更文挑战第22天】在.NET 8中,从零开始搭建权限管理系统并使用JWT(JSON Web Tokens)创建Token是关键步骤。JWT是一种开放标准(RFC 7519),用于安全传输信息,由头部、载荷和签名三部分组成。首先需安装`Microsoft.AspNetCore.Authentication.JwtBearer`包,并在`Program.cs`中配置JWT服务。接着,创建一个静态方法`GenerateToken`生成包含用户名和角色的Token。最后,在控制器中使用`[Authorize]`属性验证和解析Token,从而实现身份验证和授权功能。
|
29天前
|
消息中间件 开发框架 前端开发
YuebonCore:基于.NET8开源、免费的权限管理及快速开发框架
YuebonCore:基于.NET8开源、免费的权限管理及快速开发框架
|
2月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
|
2月前
|
存储 开发框架 算法
ASP.NET Core 标识(Identity)框架系列(四):闲聊 JWT 的缺点,和一些解决思路
ASP.NET Core 标识(Identity)框架系列(四):闲聊 JWT 的缺点,和一些解决思路
|
2月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
|
2月前
|
存储 开发框架 .NET
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
|
2月前
|
数据库
分享一个 .NET EF 6 扩展 Where 的方法
分享一个 .NET EF 6 扩展 Where 的方法
|
2月前
|
存储 开发框架 JSON
ASP.NET Core 标识(Identity)框架系列(二):使用标识(Identity)框架生成 JWT Token
ASP.NET Core 标识(Identity)框架系列(二):使用标识(Identity)框架生成 JWT Token
|
2月前
|
开发框架 .NET 数据库连接
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
|
4月前
|
SQL 开发框架 .NET
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
下一篇
无影云桌面