ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加
原文: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"> 真实姓名:</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"> 确认密码:</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"> 安全级别:</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" />男
<input class="easyui-validatebox" type="radio" name="Gender" id="Girl" value="女" />女
<input class="easyui-validatebox" type="radio" name="Gender" id="No" value="未知" />未知
</td>
<td><label for="Birthday"> 出生日期:</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"> 电话号码:</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"> 排序码:</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)好了,大家都早点休息吧,好的身体是成功的一半!
Kencery返回本系列开篇
ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加的更多相关文章
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列
http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据 ...
随机推荐
- JAVA Socket超时浅析(转)
套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”.针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”.JAVA有两个基于数据流 ...
- Peter's Hobby
主题链接 题意: 题意比較麻烦.. .n天,给出每天的叶子的一种状态(Dry , Dryish , Damp and Soggy),最有可能出现的天气序列(Sunny, Cloudy and Rain ...
- 一个vbs文件将指定文件夹下的文件名输出到指定文件夹下
'on error resume NextConst MY_COMPUTER=&H11& Const WINDOW_HANDLE=0 Const OPTIONS=0 '设置我的电脑为根 ...
- Scilab 的画图函数(1)
Scilab 的画图函数 plot 函数 最主要的是 plot 函数,与 matlab 中的plot 函数类似. xdata = linspace(1,10,50); ydata = sin(xdat ...
- C# 经典排序算法大全
C# 经典排序算法大全 选择排序 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...
- Linus Torvalds来自开发商的消息:成就,不定
于IEEE 计算机学会在接受记者采访时, Linux父亲解释了他的哲学了操作系统的成功背后.Linus Torvalds在接受IEEE采访计算机学会谈过:"Linux这项新技术是不是它的,但 ...
- shuffle一个简单的过程叙述性说明
shuffle它是在map和reduce过程之间.我们看看在这个过程中的步骤,了解在这个问题上不深,有可能是一个错误.忘记修正 1. map map出口key,value,里的context.writ ...
- 一天JavaScript示例-判定web页面的区域
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 简单实现Android平台多语言
这里,我们认识到两种语言.中国简体和繁体中国. 在res文件建议两个文件夹 values-zh-rCN values-zh-rTW 两个目录下都有一个strings.xml文件. 两个同名文件的字符串 ...
- flex eclipse综合spring入门
首先下载FlashBuilder_4_7_LS10_win64.exe试了几eclipse安装没有成功插头,含有myeclipse8.5.spring sts2.9.2.eclipse3.5.j2ee ...