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

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

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

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

_Layout.cshtml内容如下:


<!DOCTYPE html>

<html>

<head>

<title>@ViewBag.Title</title>

<link href="/Content/easyui.css" rel="stylesheet" type="text/css" />

<link href="/Content/icon.css" rel="stylesheet" type="text/css" />

<link href="/Content/base.css" rel="stylesheet" />

<script src="/Content/jquery.min.js"></script>

<script src="/Content/jquery.easyui.min.js"></script>

<script type="text/javascript">

function createIFrame(src) {

var iframe = "<iframe width=‘100%‘ height=‘100%‘ scrolling=‘no‘ frameborder=‘0‘ src=‘" + src + "‘></iframe>";

return iframe;

}

@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 "<a href=‘javascript:delAction("+r.AId+")‘><img src=‘/Content/sys_icons/decline.png‘ /></a> <a href=‘javascript:editAction("+r.AId+")‘><img src=‘/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");

}

});

}

}

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

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

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

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


[HttpPost]

public ActionResult LoadActionData()
{

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

return Json(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 in dt.Rows)

{

action = new Model.M_ArHat_Action();

action.AId = Convert.ToInt32(row["AId"]);

action.AName = row["AName"].ToString();

action.AValue = row["AValue"].ToString();

list.Add(action);

}

}

return list;

}

#endregion

#region 添加方法

/// <summary>

/// 添加一个Action

/// </summary>

/// <param name="action"></param>

public void AddAction(Model.M_ArHat_Action action)

{

permitDAL.AddAction(action);

}

#endregion

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


public class D_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 void AddAction(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>

public DataTable SelectAllAction()

{

return DAL.SqlHelper.ExecuteQuery(sql1);

}

#endregion

}

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

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

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

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


[HttpGet]

public ActionResult AddAction()

{

return View();

}

/// <summary>

/// 添加动作Post

/// </summary>

/// <param name="action"></param>

/// <returns></returns>

[HttpPost]

public ActionResult AddAction(Model.M_ArHat_Action actionInfo)

{

try

{

permitBLL.AddAction(actionInfo);

StringBuilder sb = new StringBuilder();

sb.Append(@"

<script>

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

</script>

");

return Content(sb.ToString());

}

catch (Exception ex)

{

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

}

}

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

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

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

时间: 2024-10-26 07:07:29

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 由于最近的事情比较多,一直忙于工作和照顾老婆,所以老魏更新的速度慢了,本来写文章就要占据工作和生活很多的时间,这也就是院子中很多文章都没写完就夭折了的原因了,不是因为作者不愿意写,而是身不由己啊. 写文章不仅锻炼自身的能力,还能够把经验分享给大家,所以贵在坚持啊.如果哪天老魏跟新文章慢了,大家要见谅啊.毕竟写文章的时候还要做案列,截图等等,比较慢的,尤其在构思文章内容的时候,可能很多天都想不出来要怎么写的. 废话不多说了,

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