ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用

  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):过滤器的使用和批量删除数据(伪删除和直接删除) 

     (19):用户信息的修改和浏览  (20):多条件模糊查询和回收站还原的实现  (21):用户角色权限基本的实现说明

(22):为用户设置角色

  前言:这段时间博客的更新比较慢,主要是这段时间工作上面比较忙点,晚上回来在吹吹风,写一点点的代码就能休息了,所以用了这段时间把代码基本写完了,但是博客的更新速度比较慢,主要是后面的这部分内容感觉博客不好写,一会在页面,一会在控制器,一会又在Model中操作,感觉写的乱而不识,虽然是这样,但是我们还是要写下去,给大家一个成型的东西才能感觉大完善,希望大家能够理解,那么今天我们就开始说我们今天的内容,今天的内容主要有这几个方向,(1):完善上篇博客中遗留的问题,(2):为用户设置权限,这个的实现效果和上篇博客基本一样,所以这里也就是基本提一下就行,(3):重新对页面进行布局,实现Tab页面。

1. 为用户设置角色遗留问题—全局查询

  (1)上篇博客我们基本说完了为用户设置角色,但是我们按照以前的代码书写的话发现了一个问题,那就是我们的用户数据查询不到了,这是什么原因呢?其实原因也很简单,那就是用户和角色是多对多的关系,当我们为用户设置角色的话,用户表中会存放角色表的实体,而角色表则会存放用户表的实体,这个我们可以在Edmx模型中看到,那么为什么会这样呢?原因就是当我们序列化BaseUser实体的时候,发现含有BaseRole属性,这时候就要序列化BaseRole属性,这时候EF提供了一个序列化导航属性的时候的延迟加载起作用了,这样的话他就会循环的去查询BaseRole和BaseUser实体类,这样序列化的话就会发生死循环,所以会报错。

  (2)根据上面我们也知道了以前的代码会出现错误,那么我们怎么避免这个错误,使我们的用户显示出来数据呢?其实我们只需要用linq将BaseUser字段全部查询出来即可,最后对用户的控制器查询效果修改之后的代码如下所示:

1         /// <summary>
2
3         ///获取所有的用户信息4
5         /// </summary>
6
7         /// <returns>返回用户详细信息的Json对象</returns>
8
9         publicActionResult GetAllUserInfos()10
11 {12
13             //Json格式的要求{total:22,rows:{}}14
15
16
17             //实现对用户分页的查询,rows:一共多少条,page:请求的当前第几页
18
19             int pageIndex = Request["page"] == null ? 1 : int.Parse(Request["page"]);20
21             int pageSize = Request["rows"] == null ? 10 : int.Parse(Request["rows"]);22
23             //得到多条件查询的参数
24
25             string RealName = Request["RealName"];26
27             string Telephone = Request["Telephone"];28
29             string EMail = Request["EMail"];30
31             int? Enabled = Request["Enabled"] == null ? -1 : int.Parse(Request["Enabled"]);32
33             string AuditStatus = Request["AuditStatus"];34
35             int? DeletionStateCode = Request["DeletionStateCode"] == null ? 0 : int.Parse(Request["DeletionStateCode"]);36
37             int total = 0;38
39             //调用分页的方法,传递参数,拿到分页之后的数据40
41             //var data = _userInfoService.LoadPageEntities(pageIndex, pageSize, out total,42
43             //u => true && u.DeletionStateCode == 0, true, u => u.SortCode);44
45             //封装一个业务逻辑层的方法,来处理分页过滤事件
46
47             var userInfoQuery = newUserInfoQuery()48
49 {50
51                 PageSize =pageSize,52
53                 PageIndex =pageIndex,54
55                 RealName =RealName,56
57                 Telephone =Telephone,58
59                 EMail =EMail,60
61                 Enabled =Enabled,62
63                 AuditStatus =AuditStatus,64
65                 Total = 0,66
67                 DeletionStateCod =DeletionStateCode68
69 };70
71              //如果含有导航属性关联的话,出现循环引用的问题,死循环
72
73             var data = from u in_userInfoService.LoadSearchData(userInfoQuery)74
75                        select new
76
77 {78
79 u.ID,u.AuditStatus,u.Birthday,u.ChangePasswordDate,u.Code,u.CreateBy,u.CreateOn,u.CreateUserID,u.DeletionStateCode,u.DepartmentID,u.Description,u.Email,u.Enabled,u.Gender,u.HomeAddress,u.IsStaff,u.IsVisible,u.Mobile,u.ModifiedBy,u.ModifiedUserID,u.ModifirdOn,u.QICQ,u.QuickQuery,u.RealName,u.SecurityLevel,u.SortCode,u.Telephone,u.Title,u.UserFrom,u.UserName,u.UserPassword80
81 };82
83             //构造成Json的格式传递
84
85             var result = new { total = userInfoQuery.Total, rows =data };86
87             //return JsonDate(result);
88
89             returnJson(result, JsonRequestBehavior.AllowGet);90
91         }

  (3)通过上述的代码实现我们就解决了我们前面提到我们遇到的问题,这里大家如果有什么不懂的话可以给我留言,可能我的预言表达能力不怎么好,只能表达到这里了。

2.为权限设置角色

  (1)上述我们看到的这个标题大致的实现思路是固定的,因为我们在上一篇博客中已经介绍过了,为用户设置角色,这几个大的模块的实现思路基本是一样的,所以在这篇博客中我就不再介绍了,代码我都已经写完,希望大家可以参考上篇博客来实现这个功能。

  (2)那么我们为什么给权限设置角色呢?看我们的Edmx模型其实大致就知道了,我这里简单的说一下,为用户设置角色,我们的角色中必然要对应于权限的操作,所有这样就出现了我们要为权限设置角色。

  (3)实现效果如图所示:

    

3.EasyUI Tabs标签页面的实现

  (1)在说这个的使用之前我们首先看一下我们以前的前台页面的架构,如图所示:

  (2)那么看我们现在项目的前台页面的架构,我们可以发现我们引入了EasyUI Tabs之后的变化,如图所示:

  (3)EasyUI Tabs控件实现了,但是在这里我们就会遇到当我们重复单击右边的导航的时候会发生什么变化,那么主要的代码如下:

1 //绑定菜单按钮的点击事件  MenuLink
2
3 function BindMenuClickEvent() {4
5    $(".MenuLink").click(function () {6
7        //获取按钮里面的src属性
8
9        var src = $(this).attr("src");10
11        //将主框架的iframe跳转到菜单指向的地址12
13        //$("#frmWorkArea").attr("src", src);14
15        //得到节点的名字来放去Title
16
17        var title = $(this).text();18
19        //拼接一个Iframe标签
20
21        var str = '<iframe id="frmWorkArea" width="100%" height="100%" frameborder="0" scrolling="yes" src="' + $(this).attr("src") + '"></iframe>'
22
23        //首先判断用户是否已经单击了此项,如果单击了直接获取焦点,负责打开
24
25        var isExist = $("#worktab").tabs('exists', title);26
27        if (!isExist) {28
29             //添加tab的节点,调用easyUITab标签的方法
30
31             $("#worktab").tabs('add', {32
33 title: title,34
35 content: str,36
37                 iconCls: 'icon-save',38
39                 closable: true
40
41 });42
43 }44
45            else{46
47                //如果存在则获取焦点
48
49                $("#worktab").tabs('select', title);50
51 }52
53 });54
55   }

4.这篇博客到这里基本就已经写完了,大家阅读的时候如果有什么问题可以给我留言,我将会在第一时间回复,这篇博客大家看起来可能有点吃力,因为不连贯,所以大家能够看看前面的博客在看这篇博客的时候将会很顺心的,那么下篇博客我们开始讲述权限组的实现。

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

    Kencery返回本系列开篇

posted on 2015-01-21 09:11 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/4237974.html

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用...相关推荐

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理(附源码)

    前言目录 前言:时间很快,已经快到春节的时间了,这段时间由于生病,博客基本没更新,所以今天写一下我们做的一个项目吧,是对权限的基本操作的操作,代码也就不怎么说了,直接上传源码和图片展示,下面我们直接进 ...

  2. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计

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

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

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

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

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

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

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

  6. 一起谈.NET技术,专访微软MVP衣明志:走进ASP.NET MVC 2框架开发

    日前微软已经发布ASP.NET MVC 2框架RC版,究竟这次RC版本的发布对于WEB开发者带来怎样的改变?以及未来ASP.NET MVC 2正式版还会有哪些改进?带着这样的问题,我们51CTO记者彭 ...

  7. 《精通 ASP.NET MVC 3 框架(第三版)》----第2章 准备工作 2.1 准备工作站

    本节书摘来自异步社区<精通 ASP.NET MVC 3 框架(第三版)>一书中的第2章,第1节,作者: [美]Adam Freeman , Steven Standerson,译者: 林逸 ...

  8. 《ASP.NET MVC 4框架揭秘》试读章节

    新作<ASP.NET MVC 4框架揭秘>于两日前分别在互动网和当当网预售,得到了广大网友,尤其是园子里面的兄弟们的热烈响应和积极支持,作为作者的我甚为感动.今天将两个试读章节发布出来,朋 ...

  9. ASP.NET MVC 4框架揭秘

    ASP.NET MVC 4框架揭秘(国内第一部Asp.net MVC 4图书,.NET名家名作,深度剖析) 蒋金楠 著 ISBN 978-7-121-19049-0 2013年1月出版 定价:89.0 ...

  10. cognos java用户权限_Cognos 权限管理之第三方目录管理员器、报表服务器权限管理、FrameWork权限管理等详细配置 【39页深度好文图文并茂带你全面了解Cognos权限管理】...

    一.引言 1.1. 编写目的 本文档是结合以往的开发经验,从实际报表开发出发,详细介绍了ReportNet报表设计流程.开发技巧,报表性能调优.FM建模规范及技巧讲解.总结的文档希望对大家在日后的开发 ...

最新文章

  1. 终于把时间序列分析的关键点全讲清楚了!
  2. %3cphp和%3c php_关于 PHP 表单安全性
  3. [洛谷P4726]【模板】多项式指数函数
  4. matplotlib 笔记:使用TeX标记
  5. CTF——Web——php 弱类型总结
  6. The server sent a disconnect packet.Received ieof for nonexistent channel 0. (code: 2)
  7. python进程多任务
  8. HDU 2602.Bone Collector-动态规划0-1背包
  9. pads导出坐标文件html,【教程】PADS如何导出SMT贴片机用的坐标文件
  10. Linux内核启动过程和Bootloader(总述)
  11. 8.5 输入输出重定向
  12. activerecord java_GitHub - redraiment/jactiverecord: 实现自己的ORM还是有价值的
  13. 安卓手机传感器采集数据并保存数据
  14. macOS Ventura 13.1 (22C65) 正式版发布,ISO、IPSW、PKG 下载
  15. 【OR】ADMMRisk Parity Portfilio Model
  16. (1)js数组常用方法 splice()、slice()、push()、unshift()、pop()、shift()、join()、reverse()、sort()、concat()、split()
  17. [OTA-day3SPI]W25Q64擦写
  18. 不知道怎么把PDF文档转Word?来看看这几个好用的PDF转Word软件
  19. 安装SQL Server 2000时出现“以前的某个程序安装已在安装……”
  20. H.264/AVC 中的宏块、片、帧

热门文章

  1. QBC检索和本地SQL检索
  2. 虚拟机中利用qemu调试跟踪linux内核
  3. seqkit根据基因id_基因家族成员的鉴定/基因在染色体上的位置
  4. python正式发布的时间_微软Visual Studio Code 1.44正式发布:加入新Python教程、时间轴视图...
  5. Linux系统(八)系统信息、其它命令、打包压缩、软件安装
  6. Bootstrap table的基础用法
  7. Django--4、认证系统
  8. .Net中EF通用数据层小结
  9. 给 Chrome浏览器 添加 Javascript小书签,查看当前页面全部加载的javascript文件及代码片段...
  10. python库--pandas--Series