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

在上一章中呢,我们基本上搭建好了环境,那么本章我们就从基础模块开始写起。由于用户,角色,动作三个当中,都是依赖与动作的,所以本章我们从动作开始做起,先把这个基础模块建立起来,然后才能把用户,角色和动作关联起来形成权限。

首先建立一个新的Controller为ActionController,为其Index方法创建一个视图文件,由于这样的视图文件太多了,而且重复性的代码也比较多,所以我们把共有的部分移植到Views/Shared/_Layout.cshtml中,换句话说就是使用模板。

_Layout.cshtml内容如下:

<!DOCTYPE html><html><head><title>@ViewBag.Title</title><linkhref="/Content/easyui.css"rel="stylesheet"type="text/css" /><linkhref="/Content/icon.css"rel="stylesheet"type="text/css" /><linkhref="/Content/base.css"rel="stylesheet" /><scriptsrc="/Content/jquery.min.js"></script><scriptsrc="/Content/jquery.easyui.min.js"></script><scripttype="text/javascript">functioncreateIFrame(src) {variframe= "<iframe width='100%' height='100%' scrolling='no' frameborder='0' src='" +src+ "'></iframe>";returniframe;}@RenderSection("script",false)</script></head><body>@RenderBody()</body></html>

然后我们建立ActionController的Index方法的View文件,内容如下:

@{ViewBag.Title = "动作设置";Layout = "/Views/Shared/_Layout.cshtml";}@section script{$(document).ready(function(){initActionGrid();});function initActionGrid(){$("#grid").datagrid({url:'/Action/LoadActionData',fitColumns:true,rownumbers:true,toolbar: [{iconCls: 'sys-icon-add',text:"添加动作",handler:addAction}],columns:[[{field:'AId',title:'ID',width:10,align:'center'},{field:'AName',title:'动作名',width:200,align:'center'},{field:'AValue',title:'动作值',width:200,align:'center'},{field:'opt',title:'操作',width:70,align:'center',formatter:function(v,r,i){return "<ahref='javascript:delAction("+r.AId+")'><imgsrc='/Content/sys_icons/decline.png'/></a> <ahref='javascript:editAction("+r.AId+")'><imgsrc='/Content/sys_icons/disk_edit.png'/></a>";}}]]});}function addAction(){$('#dialog').dialog({title: '添加动作',iconCls:"sys-icon-add",width: 400,height: 300,closed: false,cache: false,modal: true,onClose:function(){$("#grid").datagrid("reload");},content:createIFrame("/Action/AddAction")});}function delAction(_aid){$.messager.confirm("提示","确认要删除此动作吗?",function(b){if(b){$.get("/Action/DelAction/",{aid:_aid},function(data){if(data=="y"){$("#grid").datagrid("reload");}},"text");}});}}<tableid="grid"data-options="fit:true"></table><divid="dialog"style="overflow:hidden"></div>

这里使用了EasyUI的DataGrid和Dialog组件,同时我们通过相应的JS函数来实现对Action的CRUD操作。

在initActionGrid函数中我们队Grid进行了一些初始化的操作,从参数可以看出我们的数据加载是通过Action/LoadData这个Action完成的,所以我们在ActionController中添加这样的方法。

[HttpPost]publicActionResult LoadActionData()
{var json = new { total = permitBLL.GetAllActionList().Count, rows =permitBLL.GetAllActionList() };returnJson(json,JsonRequestBehavior.DenyGet);}

这个方法中使用了B_Permit这个类的实例来获得数据。下面我们看一下这个类的内容:

#region 查询方法/// <summary>///得到所有的Action/// </summary>/// <returns></returns>public List<Model.M_ArHat_Action>GetAllActionList() {List<Model.M_ArHat_Action> list = null;DataTable dt=permitDAL.SelectAllAction();if (dt != null && dt.Rows.Count > 0){list= new List<Model.M_ArHat_Action>();Model.M_ArHat_Action action= null;foreach (DataRow row indt.Rows){action= newModel.M_ArHat_Action();action.AId= Convert.ToInt32(row["AId"]);action.AName= row["AName"].ToString();action.AValue= row["AValue"].ToString();list.Add(action);}}returnlist;}#endregion#region 添加方法/// <summary>///添加一个Action/// </summary>/// <param name="action"></param>public voidAddAction(Model.M_ArHat_Action action){permitDAL.AddAction(action);}#endregion

在这个类中,提供了两个方法,一个是用来查询的,一个是用来插入的。当然了这里肯定少不了DAL层的功劳,同时我们来看看DAL中的D_Permit.cs的内容:

public classD_Permit {#region SQL语句 //查询所有的动作(未分页)private static readonly string sql1 = "select * from ArHat_Action order by AId Desc";//添加一个动作private static readonly string sql2 = "insert into ArHat_Action values(@AName,@AValue)";#endregion #region 添加方法 /// <summary> ///添加一个动作/// </summary> /// <param name="action"></param> public voidAddAction(Model.M_ArHat_Action action) { SqlParameter[] parameters={new SqlParameter("@AName",SqlDbType.VarChar,50),new SqlParameter("@AValue",SqlDbType.VarChar,50) }; parameters[0].Value =action.AName; parameters[1].Value =action.AValue; DAL.SqlHelper.ExecuteNonQuery(sql2, parameters); }#endregion #region 查询方法 /// <summary> ///查询所有的动作/// </summary> /// <returns></returns> publicDataTable SelectAllAction()  {returnDAL.SqlHelper.ExecuteQuery(sql1); }#endregion }

在这个类中,我们实现了对Action的查询和添加的SQL实现。说到这里呢,如果说要让项目能够更加的灵活,那么应该在三层架构的基础上添加面向接口的编程,换句话说我们得创建一个IDAL和IBLL两个项目,在这两个项目中要写出对数据库和业务逻辑的抽象操作,这是最好不过了,但是本身由于老魏这个项目比较小,所以就没有采用这中写法,感兴趣的朋友可以再QQ群中来共同的讨论一下。

好了,现在我们来看一下最后运行的结果。

当我们点击“添加动作”的时候,界面如下:

这里需要注意的是,在添加动作的js函数中,使用了content:createIFrame("/Action/AddAction")。也就是用iframe来加载AddAction的界面,当点击保存的时候会执行一个Post请求。关于这连个Action我们来看一下内容:

[HttpGet]publicActionResult AddAction() {returnView();}/// <summary>///添加动作Post/// </summary>/// <param name="action"></param>/// <returns></returns>
[HttpPost]publicActionResult AddAction(Model.M_ArHat_Action actionInfo){try{permitBLL.AddAction(actionInfo);StringBuilder sb= newStringBuilder();sb.Append(@"<script>    parent.$(""#dialog"").dialog(""close"");</script>");returnContent(sb.ToString());}catch(Exception ex){return Content("添加失败:" +ex.Message);}}

这里由于老魏没有使用Jquery提供的jquery.unobtrusie-ajax.js,所以这里使用了Content来执行关闭对话框的方法。当然了,在UI端,需要注意的是要给Dialog设置一个onClose的事件,让其关闭的时候能够刷新父页面。

至于删除,老魏这里没有做,如果大家在做的过程中遇到了,希望能够自行的实现。本章到这里就写到这里吧,虽然都是一堆代码,看起来没有什么,但是在写js的时候真是费劲啊。

在这里得抱歉说一下了,老婆的预产期就要到了,所以后续的章节可能跟新的慢了,但是老魏保证的是肯定不会夭折的。

转载于:https://www.cnblogs.com/arhat/p/3724065.html

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

  1. 一起谈.NET技术,ASP.NET MVC Membership 权限 漫谈

    以前一位同事习惯于使用Membership来进行权限管理,现在随着ASP.NET MVC的引入,采用以前的方法,提出了以下方案: ASP.NET MVC+Membership结合,通过在web.con ...

  2. ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第三篇

    摘要       本文对ASP.NET MVC的全局运行机理进行一个简要的介绍,以使得朋友们更好的理解后续文章. 前言       在上一篇文章中,我们实现了第一个ASP.NET MVC页面.对于没有 ...

  3. 【转】ASP.NET MVC实现权限控制

    这篇分享一下 ASP.NET MVC权限控制.也就是说某一用户登录之后,某一个用户是否有权限访问Controller,Action(操作),视图等 想实现这些功能,需要在数据库创建好几个表:[User ...

  4. asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(二)—— easyui的简单实用

    下面开始在UserManager.Web中利用easyUI构建web. 1. 先删除自带的controllers.models和views(里面的shared和web.config可以保存)下面的文件 ...

  5. Asp.Net MVC学习总结(三)——过滤器你怎么看?

    一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的逻辑.提供了一个简单而优雅的方式来实现横切关注点. 2.所谓的过滤器(Filters),MVC框架里 ...

  6. ASP.NET MVC中权限控制的简单实现

    1.重写AuthorizeAttribute类,用自己的权限控制逻辑重写AuthorizeCore方法 public class MyAuthorizeAttribute : AuthorizeAtt ...

  7. ASP.Net MVC OA项目笔记三

    1.1.1 业务层和数据层之间加一个数据会话层,封装所有数据操作类实例的创建(工厂类) 工厂类是负责对象的创建 作用:将BLL和DAL解耦了,提供一个数据访问的统一访问点 数据会话层DBSession ...

  8. 在ASP.NET MVC里对Web Page网页进行权限控制

    我们在ASP.NET MVC开发时,有时候还是得设计ASP.NET的Web Page网页(.aspx和.aspx.cs),来实现一些ASP.NET MVC无法实现的功能,如此篇<Visual S ...

  9. Asp.net mvc 知多少(一)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

最新文章

  1. SuperSocket .net服务框架
  2. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义边界调色板、brewer调色板、比例灰度)实战
  3. 09、组策略之软件分发(05)
  4. v8学习笔记(八) 【JS与C++互调】
  5. MachineLearning(3)-流型
  6. Java编写学生类student程序_编写一个JAVA程序片断定义一个表示学生的类student.docx...
  7. 华为nova7se乐活版支持鸿蒙,华为nova7se乐活版和畅享20se哪个好 参数区别对比评测...
  8. python qq红包_numpy的Python,发红包,用
  9. paip.互联网产品要成功的要素
  10. springboot集成微信和QQ第三方登录
  11. 微信小程序map组件callout与label简单用法
  12. php框架laravel下载,laravel 5.4
  13. 关于#define/extern/static的思考与总结
  14. 什么是再生纤维素纤维
  15. 案例:学生版增删改查
  16. 关于任意群是否都是可以由其元素生成,及群中心与元素正规化子关系的分析(2009及1997群论真题)
  17. Android OpenGL ES 基础原理
  18. 【SpringBoot整合Mybatis】数据库某字段值为空时,接口未返回该字段 解决办法
  19. b2b2c系统jwt权限源码分享part2
  20. OSPF 和 ISIS对比

热门文章

  1. RHEL 7.0已发布 CentOS 7 即将到来
  2. jquery 请求jsp传递json数据的方法
  3. 批处理延迟sleep应用
  4. oracle索引的监控
  5. [转载] 希腊字母读音表
  6. Cisco ××× troubleshooting
  7. Go泛型草案设计简明指南
  8. EMQX源码阅读笔记
  9. Dubbo(五)Dubbo 简单监控平台(monitor)搭建
  10. Ribbon负载均衡原理,Feign是如何整合Ribbon的?