ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览
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):权限数据库模型和用户登录详细错误 (16):用户注册的各种验证
(17):注册用户功能的细节处理 (18):过滤器的使用和批量删除数据(伪删除和直接删除)
前言:昨天我们大致说了一下用户的删除以及使用过滤器过滤用户的登录,当在删除的时候我们我们使用了批量删除数据,也就是用户可以选择多条数据进行删除,而且我们实现了直接删除和伪删除的功能,直接删除就是用户将这条信息直接删除了,而伪删除确是用户只修改了标识是否删除的标记,最后我们我们还实现了过滤器的功能,也就是用户只有登录了才能够进行一系列的操作,负责不管用户怎么操作都会跳转到登录页面让用户登录。
今天我们就来实现用户的修改和浏览,为什么将这两个放到一起呢?因为我觉得这两个功能基本差不多,所以最后肯定就将这两个方法封装起来而使代码变得更加简单一些,下面我们就开始我们今天的博客吧。
1. 用户信息的修改—读取信息显示在层上面
(1)首先我们知道用户信息修改的话,我们只能选择一条数据进行修改,所以我们在代码中就要做限制用户只能选择一条数据,这是我们应该注意的一个细节。
(2)那么我们如何来实现用户的修改呢?EasyUI提供了一种方法,很简单的,但是我觉得不适用我这个项目,因为我在修改的时候会拿出很多在添加的时候数据库中没有的值,但是我们的EasyUI的DataGird里面的值确实很有限的,也就是说不是数据库中的所有的值,我们去不出来一些需要修改的值,那么这样的话我就产生了一个这样的思路,我首先拿到用户的ID,然后直接去后台查询用户信息然后返回给前台,这样前台就可以拿到用户的所有信息了,这就是我的第一种思路,还有就是第二种思路直接使用MVC自带的那些扩展控件来实现直接读取。
(3)那么下面我们开始来实现用户修改信息的第一步,首先我们能够读取到用户的所有信息显示在弹出层里面,我们就按照上述的方法来实现,那么读取用户显示显示在层上的代码如下,弹出层图纸赋下面:
//绑定修改显示详细信息的方法
function BindShowUpdateUserInfo() {
//首先用户发送一个异步请求去后台实现方法
var ID = $("#test").datagrid("getSelections")[].ID; //获取到了用用户选择的ID
$.get("/UserInfo/GetUserInfos", { ID: ID }, function (userInfo) {
$("#UserName1").val(userInfo.UserName);
$("#RealName1").val(userInfo.RealName);
$("#Email1").val(userInfo.Email);
$("#SecurityLevel1").combobox('setValue', userInfo.SecurityLevel);
$('input[name="Gender"]:checked').val(userInfo.Gender);
$("#Birthday1").datebox('setValue', userInfo.Birthday);
$("#Mobile1").val(userInfo.Mobile);
$("#Telephone1").val(userInfo.Telephone);
$("#QICQ1").val(userInfo.QICQ);
$("#SortCode1").val(userInfo.SortCode);
$("#IsStaff").combobox('setValue', userInfo.IsStaff);
$("#IsVisible").combobox('setValue', userInfo.IsVisible);
$("#Enabled").combobox('setValue', userInfo.Enabled);
$("#AuditStatus").combobox('setValue', userInfo.AuditStatus);
$("#Description1").val(userInfo.Description);
});
}
//根据用户ID读取当前用户的信息
public JsonResult GetUserInfos(int ID)
{
//根据ID的到当前选中的用户的信息
var userInfos = _userInfoService.LoadEntities(c => c.ID == ID).FirstOrDefault();
return Json(userInfos, JsonRequestBehavior.AllowGet);
}

(4)通过上面我们就完成了我们的初步读取信息的过程,那么在这个里面还有一个Bug我还没有改过来,那么是性别的读取,我拿到值之后如何赋值给控件呢?我写了Js的方法但是好像实现不了,所以我这里暂时还不知道什么原因。如果大家知道的话可以给我留言,谢谢。
2.用户信息的修改
(1)根据第一个知识点我们已经拿到了用户的信息,那么这时候我们就需要对用户的信息进行修改并且保存,那么现在我们开始描述我们修改用户的方法,首先我们还是给后台发送异步请求,请求的代码如下:
//修改用户的信息
function UpdateUserInfo() {
//首先取出来用户选择的数据的ID
var rows = $("#test").datagrid("getSelections");
//首先取出来值判断用户只能选择一个
if (rows.length != ) {
$.messager.alert("友情提示", "每次只能修改一条,你已经选择了<font color='red' size='6'>" + rows.length + "</font>条", "error");
return;
}
//处理修改的信息,弹出修改的对话框,然后显示选择的用户的详细信息
$("#DivUpdateUser").dialog('open').dialog('setTitle', '用户修改信息');
//绑定修改显示详细信息的方法
BindShowUpdateUserInfo();
//绑定修改事件
//BindUpdateUserInfo();
}
//修改用户的相信信息
function BindUpdateUserInfo() {
$("#btnUpdate").click(function () {
//首先也是对用户进行检测
var validate = $("#ffUpdate").form("validate");
if (validate == false) {
return false;
}
//构造参数发送给后台
var posData = $("#ffUpdate").serializeArray();
$.get("/UserInfo/UpdateUserInfo", posData, function (date) {
if (date == "OK") {
//修改成功,关闭弹出层,刷新DataGird
alert("修改成功");
$("#DivUpdateUser").dialog('close');
$("#test").datagrid("reload");
}
else {
$.messager.alert("友情提示", "修改失败,请您检查");
}
})
});
}
(2)当我们写完前台的时候这时候我们就要去后台实现修改的方法,这里也就不说了,很简单的,我们直接上代码,如果大家有不懂的地方可以Q我,或者留言都行,代码如下:
//根据用户ID信息修改用户的信息
public ActionResult UpdateUserInfo(BaseUser userInfo)
{
//首先根据传递过来的参数查询出要修改的信息
var editUserInfo = _userInfoService.LoadEntities(c => c.ID == userInfo.ID).FirstOrDefault();
if (editUserInfo == null)
{
return Content("错误信息,请您检查");
}
//对用户的信息进行修改
editUserInfo.UserName = userInfo.UserName;
editUserInfo.RealName = userInfo.RealName;
editUserInfo.QuickQuery = userInfo.UserName;
editUserInfo.Email = userInfo.Email;
editUserInfo.SecurityLevel = userInfo.SecurityLevel;
editUserInfo.Gender = userInfo.Gender;
editUserInfo.Birthday = userInfo.Birthday;
editUserInfo.Mobile = userInfo.Mobile;
editUserInfo.Telephone = userInfo.Telephone;
editUserInfo.QICQ = userInfo.QICQ;
editUserInfo.SortCode = userInfo.SortCode;
editUserInfo.IsStaff = userInfo.IsStaff;
editUserInfo.IsVisible = userInfo.IsVisible;
editUserInfo.Enabled = userInfo.Enabled;
editUserInfo.AuditStatus = userInfo.AuditStatus;
editUserInfo.Description = userInfo.Description;
editUserInfo.ModifirdOn = DateTime.Parse(DateTime.Now.ToString());
BaseUser user = Session["UserInfo"] as BaseUser;
editUserInfo.ModifiedUserID = user.Code; //获取修改信息的ID
editUserInfo.ModifiedBy = user.UserName;//获取修改此用户的用户名
if (_userInfoService.UpdateEntity() > )
{
return Content("OK");
}
return Content("Error");
}
(3)这样我们就实现了用户的修改,但是在这里我们需要注意的是前台我们在调用修改的Jquery方法的时候我们要在页面首次刷新的时候就调用一次这个方法,而不是在下面的单击按钮上面,如果实在单击按钮上的话,那么很容易造成连续发好几次请求,也就是执行成功好几次。
(4)那么当我们再次的修改用户的时候,我们也要注意用户的那些信息是不能重复的,所以我们再次的重写用户修改的判断代码如下:
//检测注册用户登录名和修改用户名不能重复
function CheckUserName() {
$("#UserName,#UserName1").blur(function () {
//得到验证控件的值
var UserNameCheck = $("#UserName").val()
UserNameCheck = $("#UserName1").val();
//发送异步请求去验证用户名不能重复
$.get("/UserInfo/CheckUserName", { UserName: UserNameCheck }, function (date) {
if (date == "OK") {
alert("该用户已经存在");
$("#UserName").val("");
$("#UserName1").val("");
return;
}
});
});
}
3.用户信息的浏览
(1)那么这时候因为我们数据库中存了很多东西,所以我们需要有一个层当我们需要看某些信息的时候给我们显示出来,这样就产生了用户信息的修改,其实我们再上面也大致看过了这个思路,但是我在这里想怎么能够实现重用的显示用户的信息,最后进过确认就形成了现在的形式。
(2)首先我们到代码上面去重用代码,代码里面我都书写了大量的注释,大家可以去看详细代码如下:
//修改用户的信息
function UpdateUserInfo(browse) {
//首先取出来用户选择的数据的ID
var rows = $("#test").datagrid("getSelections");
//首先取出来值判断用户只能选择一个
if (rows.length != ) {
$.messager.alert("友情提示", "每次只能修改/浏览一条,你已经选择了<font color='red' size='6'>" + rows.length + "</font>条", "error");
return;
}
if (browse == null) {
//处理修改的信息,弹出修改的对话框,然后显示选择的用户的详细信息
$("#DivUpdateUser").dialog('open').dialog('setTitle', '用户修改信息');
//绑定修改显示详细信息的方法
BindShowUpdateUserInfo();
}
else {
//处理浏览的信息,弹出浏览狂,然后显示浏览信息的相信信息
//绑定用户的浏览信息
BindBrowerUserInfo();
}
//绑定修改事件
//BindUpdateUserInfo();
}
(3)上述代码就是我们实现代码重用的部分,至于绑定用户的浏览信息,我这里就不详细描述了,因为我在上面已经第一个信息里面就已经给出了详细的信息。
4.小结
(1)这篇博客到这里我们差不多都已经实现了,现在越来越感觉自己写这些东西有点罗嗦了,当然了用户信息马上完成,当用户完成之后我就会立即直接转入到权限的分析,角色和权限的增删改查录入等信息就不会再展示出来了,在这里给大家做个说明,毕竟如果要实现权限的话还是要有数据的。下面我将展示一些我们今天完成的效果


Kencery返回本系列开篇
ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览的更多相关文章
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...
- 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实现权限管理系列之开篇
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 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实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2 ...
随机推荐
- Atitit.列表页and查询条件的最佳实践(1)------设定搜索条件and提交查询and返回json数据
Atitit.列表页and查询条件的最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1. 配置条件字段@Conditional 1 1 2. 2. 配置条件字段显示类 ...
- 使用BackgroundWorker组件进行异步操作编程
本文介绍了BackgroundWorker组件的功能及在基于事件的异步操作编程中的应用,并对组件的实现原理进行简述.在应用程序中,可能会遇到一些执行耗时的功能操作,比如数据下载.复杂计算及数据库事务等 ...
- 联想A798T刷机包 基于百度云V6 集成RE3.1.7美化版 精简冗余文件
ROM介绍 1.apk进行odex合并及zipaliang优化-省电及降低内存暂用. 2.測试相机.通话.数据.wifi.蓝牙.等传感器均正常,. 3.提供时间居中防iphone状态栏补丁 4.增加I ...
- ASP.NET自定义控件组件开发 第一章 第二篇 接着待续
原文:ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 很感谢大家给我的第一篇ASP.NET控件开发的支持!在写这些之前,我也看了 ...
- Eclipse建筑物SSH(struts-2.2.3 + spring-2.5.6 + hibernate-3.6.8)相框-随着源代码
一直想自己搭建一个ssh框架,这次因为编写demo的须要,就亲手搭建了一下,并逐步測试!以下进入正题: 创建Struts项目 整合步骤: 1,在Eclipse中创建一个DynamicWeb Proje ...
- 配置Tomcat出现Unsupported major.minor version 51.0
在配置tomcat时,配置好jdk1.6,下载的tomcat8.0,结果执行start-up.bat,总是一闪而过,网上查了大量的资料,都说是可能是jdk没配置好,但实际上jdk的环境变量设置正常,后 ...
- jsp include指令标签
假设须要在JSP页面内某处总体嵌入一个文件,就能够考虑使用这个指令标签. 该指令标签例如以下: <%@ include file ="文件的名字"%> 该指令标签的作用 ...
- MyEclipse—怎样在MyEclipse中创建servlet3.0
servlet3.0随着Java EE6规范一起公布,那么怎样在MyEclipse中创建3.0版的servlet呢? 1.启动MyEclipse.获得下图: 2.点击上图"File" ...
- RH133读书笔记(11)-Lab 11 System Rescue and Troubleshooting
Lab 11 System Rescue and Troubleshooting Goal: To build skills in system rescue procedures. Estimate ...
- Android开发之合并文件的几种方式
以下介绍合并文件的几种方式,并通过合并amr文件来举例介绍合并文件的详细流程.amr格式的文件头是6字节,所以在进行文件合并的时候要减去除第一个文件以外的其它文件的文件头. 注意:不同文件的文件头是不 ...