ASP.NET MVC +EasyUI 权限设计(四)角色动作

请注明转载地址:http://www.cnblogs.com/arhat

由于最近的事情比较多,一直忙于工作和照顾老婆,所以老魏更新的速度慢了,本来写文章就要占据工作和生活很多的时间,这也就是院子中很多文章都没写完就夭折了的原因了,不是因为作者不愿意写,而是身不由己啊。

写文章不仅锻炼自身的能力,还能够把经验分享给大家,所以贵在坚持啊。如果哪天老魏跟新文章慢了,大家要见谅啊。毕竟写文章的时候还要做案列,截图等等,比较慢的,尤其在构思文章内容的时候,可能很多天都想不出来要怎么写的。

废话不多说了,接着上一章的内容说。在上一章中我们把基础模块写完了,那么可以再上一章的基础上呢,可以把动作分为“模块--动作”,即每个模块都对应自己的动作,这里呢老魏就不在写了。本章主要解决一下角色和动作之间的关系,由于角色和动作之间是多对多的关系,所以牵涉到了一个关系表“ArHat_Role_Action”。这张表中存储的是角色和动作。

首先,我们创建一个RoleController控制器,然后给Index函数添加一个视图文件Index.cshtml。内容如下:


@{

ViewBag.Title = "角色管理";

Layout = "~/Views/Shared/_Layout.cshtml";

}

@section script{

$(document).ready(function(){

initUserGrid();

});

function initUserGrid(){

$("#grid").datagrid({

url:‘/Role/LoadRoleData‘,

fitColumns:true,

rownumbers:true,

toolbar: [{

iconCls: ‘sys-icon-add‘,

text:"添加角色",

handler:addRole

}],

columns:[[

{field:‘RId‘,title:‘ID‘,width:50,align:‘center‘},

{field:‘RName‘,title:‘角色名‘,width:200,align:‘center‘},

{field:‘opt‘,title:‘操作‘,width:200,align:‘center‘,formatter:function(v,r,i){

return "<a href=‘javascript:delRole("+r.RId+")‘><img src=‘/Content/sys_icons/user_delete.png‘ /></a> <a href=‘javascript:permitRoleAction("+r.RId+")‘><img src=‘/Content/sys_icons/user_edit.png‘ /></a> ";

}}

]]

});

}

function addRole(){

$(‘#dialog‘).dialog({

title: ‘添加角色‘,

iconCls:"sys-icon-add",

width: 400,

height: 300,

closed: false,

cache: false,

modal: true,

onClose:function(){

$("#grid").datagrid("reload");

},

content:createIFrame("/Role/AddRole")

});

}

function delRole(_rid){

$.messager.confirm("提示","确认要删除此角色吗?",function(b){

if(b){

$.get("/Permit/Role/DelRole/",{rid:_rid},function(data){

if(data=="y"){

$("#grid").datagrid("reload");

}

},"text");

}

});

}

function permitRoleAction(_rid){

$(‘#dialog‘).dialog({

title: ‘角色授权‘,

iconCls:"sys-icon-add",

width: 400,

height: 300,

closed: false,

cache: false,

modal: true,

onClose:function(){

$("#grid").datagrid("reload");

},

content:createIFrame("/Role/PermitRole/"+_rid)

});

}

}

<table id="grid" data-options="fit:true"></table>

<div id="dialog" style="overflow:hidden"></div>

在上面的代码中,把数据加载和相应的功能函数都已经写好了,下面主要是在控制器中实现相应的数据就可以了。

当点击“添加角色”按钮的时候,会打开一个弹出层,在弹出层中一个页面,也就是Role控制器下的AddRole这个动作,但是这个动作要分为两个,一个是用来作为页面的,一个用来处理提交传递过来的值。下面来看一下此时的Role控制器的代码。


public class RoleController : Controller

{

private BLL.B_Permit permitBLL = new BLL.B_Permit();

public ActionResult Index()

{

return View();

}

[HttpPost]

public ActionResult LoadRoleData()

{

var json = new { total = permitBLL.GetAllRoleList().Count, rows = permitBLL.GetAllRoleList() };

return Json(json);

}

[HttpGet]

public ActionResult AddRole()

{

return View();

}

[HttpPost]

public ActionResult AddRole(Model.M_ArHat_Role role)

{

try

{

permitBLL.AddRole(role);

StringBuilder sb = new StringBuilder();

sb.Append(@"

<script>

parent.$(""#dialog"").dialog(""close"");

</script>

");

return Content(sb.ToString());

}

catch (Exception ex)

{

return Content("添加失败:" + ex.Message);

}

}

}

大家注意到了,在AddRole方法的上面有一个Attribute来说明这个方法的请求类型,这样可以实现在控制器中方法的重载(具体请看《一步步学习ASP.NET
MVC
》)。

再添加角色的时候,可以把动作也查询出来,一起操作,但这里老魏使用的单独操作,在每条数据的后面可以通过来给角色添加动作。

当我们点击的时候,也会有一个弹出层,我们看看一下效果。

这里呢,老魏得说声抱歉了,这个页面做的实在是拿不出手了,本来这个页面可以使用Tree的,但是为了说明一个问题,这里没有使用Tree。什么问题呢,当我们给角色添加一个或几个动作的时候,点击保存,那么再打开这个页面的时候,同时要选中已经添加的,还要显示没有添加的。同时这地方要注意的是,每次给角色添加动作的时候,首先要做一件事就是把这个角色下的动作全部删除掉,然后在添加。我们来看一下这个方法的实现。


    [HttpGet]

public ActionResult PermitRole(string rid)

{

ViewBag.ActionList = permitBLL.GetAllActionList();

ViewBag.RoleActionList = permitBLL.GetRoleActionList(rid);

ViewBag.RId = rid;

return View();

}

[HttpPost]

public ActionResult PermitRoleAction()

{

string aids = Request.Form["aid"];

string rid = Request.Form["RId"];

try

{

permitBLL.AddRoleAction(aids,rid);

StringBuilder sb = new StringBuilder();

sb.Append(@"

<script>

parent.$(""#dialog"").dialog(""close"");

</script>

");

return Content(sb.ToString());

}

catch (Exception ex)

{

return Content("添加失败:" + ex.Message);

}

}

permitBLL.AddRoleAction(aids,rid)这方法就是用来添加动作的,然后我们到BLL中去看下这个方法的实现。


public void AddRoleAction(string aids,string rid)

{

//删除该角色下的所有动作

permitDAL.DeleteRoleAction(rid);

//添加该角色下的动作

foreach (string aid in aids.Split(‘,‘))

{

permitDAL.AddRoleAction(aid, rid);

}

}

大家看到了,首先删除,然后在添加,这样前面说的那个问题就可以解决了。由于本章牵涉到的代码比较多,这里在文章的最后提供代码的下载。大家可以参考一下,当然了有什么需要讨论的可以留言给我。

代码下载

时间: 2024-10-11 07:36:04

ASP.NET MVC +EasyUI 权限设计(四)角色动作的相关文章

ASP.NET MVC +EasyUI 权限设计(二)环境搭建

请注明转载地址:http://www.cnblogs.com/arhat 今天突然发现博客园出问题了,老魏使用了PC,手机,平板都访问博客园了,都是不能正常的访问,原因是不能加载CSS,也就是不能访问common.cnblogs.com这个域名,一直出现"Aborted",非常的郁闷. 页面就是这样子的,不知道为什么,难道是不是我的3个终端有问题吧,还是园子的服务器有问题呢?还是路由器的问题呢?到现在这个问题还没解决,郁闷死了!弄得心情非常的不爽. 好吧,不在说这个问题了,开始我们的正

ASP.NET MVC +EasyUI 权限设计(一)开篇

在前一段时间中,老魏的确非常的忙碌,Blog基本上没有更新了,非常的抱歉,那么在后面的时间中,老魏会尽量的抽时间来写的,可能时间上就不太富裕了.今天开始呢,老魏会和大家分享一下关于权限设计的有关文章,由于在园子中已经有很多人写过这方面的知识了,所以老魏在这里呢可不能班门弄斧了,只是把自己的理解和做法和大家分享一下,如果有什么不对的地方或者可以优化的地方,老魏非常希望能够得到各位的建议. 话说权限是在任何的项目或者产品中都必须要用的模块,而这部分呢基本上是作为基础数据来提供的,为了能够控制各个用户

ASP.NET MVC +EasyUI 权限设计(三)基础模块

请注明转载地址:http://www.cnblogs.com/arhat 在上一章中呢,我们基本上搭建好了环境,那么本章我们就从基础模块开始写起.由于用户,角色,动作三个当中,都是依赖与动作的,所以本章我们从动作开始做起,先把这个基础模块建立起来,然后才能把用户,角色和动作关联起来形成权限. 首先建立一个新的Controller为ActionController,为其Index方法创建一个视图文件,由于这样的视图文件太多了,而且重复性的代码也比较多,所以我们把共有的部分移植到Views/Shar

asp.net mvc +easyui 实现权限管理(二)

一写完后,好久没有继续写了.最近公司又在重新开发权限系统了,但是由于我人微言轻,无法阻止他们设计一个太监版的权限系统.想想确实是官大一级压死人啊, 没办法我只好不参与了 让他们去折腾. 我就大概说一下公司目前在做的权限系统,各位看官给点评价. 设计总体要求: (注:项目名称为 统一权限管理系统) 1.做一个通用权限系统. 2.权限设计按照角色设置. 3.提供统一权限接口 以上就是整体要求,解释一下, 我们的通用是指的以后每开发一套新系统,只需要在统一权限管理系统中进行相应的配置就好了,无需再去开

关于ASP.NET MVC的权限认证的一些总结

最近在学ASP.NET MVC的权限认证的一些东西,上网搜索了一阵,发现网上的方法大多数是以下几类: 一.FormsAuthentication.SetAuthCookie(admin.Name, false)或者是FormsAuthenticationTicket 感受:感觉FormsAuthentication.SetAuthCookie这种方法重在检查是否有用户登录等,需要检查权限时,要调用this.User.Identity.IsAuthenticated方法来检查是否授权等,每次要检查

对Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架的个人认识

对Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架的个人认识   初次接触Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架,查阅了相关资料,了解了框架如何使用,以及优缺点,下面的说法可能比较浅显,后续的可能在开发过程中能了解的更深刻一些.说的不对的地方请及时指正. 首先,拿到这个框架的时候,第一个想问的问题是为什么想用这块框架,有什么好处,通过查资料浅显的理解为:为了实现应用的松耦合,通过配置完成对数据业务逻辑的处理,节省开发时

ASP.NET MVC+EasyUI+Entity FrameWork 整合开发

本文详细讲解怎么用ASP.NET MVC+EasyUI+Entity FrameWork 来开发一个项目 对于ASP.NET MVC的Jscript库,主要引用 <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")"></script> <script src="@Url.Content("

asp.net mvc easyui datagrid分页

提到 asp.net mvc 中的分页,很多是在用aspnetpager,和easyui datagrid结合的分页却不多,本文介绍的是利用easyui 中默认的分页控件,实现asp.net mvc分页. easyui datagrid分页要求数据采用的格式 :{total:2,row:[]}, 在asp.net mvc 中服务器端只要返回这符合这样格式的json数据就好. 页面前端: 服务器端: 附带asp.net 结合 easyui 增删改查的例子: asp.net mvc easyui d

asp.net+mvc+easyui+sqlite 简单用户系统学习之旅

首次接触asp.net开发,希望把自己的学习之旅写下来,一方面做个知识归纳技术总结,另一方面开放到博客中,和大家一起交流学习! asp.net是目前流行的web开发技术之一,是微软旗下开发的基于.net framework的一套免费的网络应用框架.因为其强大专业的后台支持,和配套优秀的vs开发工具,越来越成为web开发者和公司的选择.学习asp.net可以参考极客学院的知识体系图. http://www.jikexueyuan.com/path/aspdotnet/ 1. C#语言基础 2. A