原文: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)这篇博客到这里我们差不多都已经实现了,现在越来越感觉自己写这些东西有点罗嗦了,当然了用户信息马上完成,当用户完成之后我就会立即直接转入到权限的分析,角色和权限的增删改查录入等信息就不会再展示出来了,在这里给大家做个说明,毕竟如果要实现权限的话还是要有数据的。下面我将展示一些我们今天完成的效果

  

  

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

    Kencery返回本系列开篇

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

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

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

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

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

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

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

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也 ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. HDU 4288 Coder (线段树)

    Coder 题目:http://acm.hdu.edu.cn/showproblem.php?pid=4288 题意:有三种类型的操作,(1)."add x",表示往集合里加入�数 ...

  2. Cocos2d-x 3.1.1 学习日志14--CocosStudio学习必看

    听说Cocos Studio非常久了,主要是由于骨骼动画.眼下看来Cocos2d-x播放动画的方式仅仅有2种: 第一种:是播放序列帧动画,即将动画的每一帧都载入进缓存里,须要播放时再使用Animati ...

  3. Java 大数类

    划分结果存在数组.供应商下标0 在剩下的标记1 import java.math.BigInteger; import java.util.Scanner; public class Main { p ...

  4. linux 下安装jdk及配置jdk环境图解

    linux 下安装jdk及配置jdk环境图解 一:先检測是否已安装了JDK 运行命令: # rpm -qa|grep jdk  或   # rpm -q jdk  或  #find / -name j ...

  5. 采用objdump调试驱动程序

    最近的一个推断调整nand是好是坏司机+测试程序,因此,与下面的调整过程.看来他也学到了一点知识.因此,关于备案. 这篇文章主要是讲述调式驱动的一个方法而已. 先来看看測试程序 #include &l ...

  6. 用正交多项式作最小二乘拟合的java实现(转)

    import java.util.Scanner; public class Least_square_fit { public static double Least_square_method(i ...

  7. [原创].NET 业务框架开发实战之八 业务层Mapping的选择策略

    原文:[原创].NET 业务框架开发实战之八 业务层Mapping的选择策略 .NET 业务框架开发实战之八 业务层Mapping的选择策略 前言:在上一篇文章中提到了mapping,感觉很像在重新实 ...

  8. 经FreeMarkerclasspath加载方式生成静态页面

    package htmlskin; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundExc ...

  9. jquery自定义插件——window实现

    该示例实现弹出窗口效应: 1.jquery.show.js /* * 开发人员:lzugis * 开发时间:2014年6月10日 * 实现功能:点击在鼠标位置显示div * 版本号序号:1.0 */ ...

  10. [Unity3d]定义自己的鼠标

    [Unity3d]自己定义鼠标 我们在用unity3d开发自己的游戏的时候.自己定义游戏中的鼠标也是常常要用到的.那我就得学学.事实上原理非常easy,先将鼠标给隐藏,然后在鼠标的位置上画出一个自己定 ...