|
【通用权限管理系统】角色管理>分配菜单保存逻辑处理 导读部分
教程部分
本帖子主要讲解权限管理>角色管理>分配菜单>保存/取消按钮的逻辑实现方法 如下图所示:
保存按钮html: [C#] 纯文本查看 复制代码 <button class="btn btn-primary" id="btnSave">保存</button>
取消按钮html: [C#] 纯文本查看 复制代码 <button class="btn btn-cancel" id="btnCancle">取消</button>
点击取消按钮,js实现如下: [C#] 纯文本查看 复制代码 $("#btnCancle").click(function () {
window.location.href = '/Sys/ReloList.aspx';
});
点击保存按钮,js实现如下: [C#] 纯文本查看 复制代码 var md = sRequire('modal'),
layout = sRequire('layout');
$("#btnSave").click(function () {
var $this = $(this);
var ckv = [];
var ckedv = [];
$('input[name="like"]:checked').each(function () {
ckv.push(this.value);
});
$('input[name="menuChild"]:checked').each(function () {
ckedv.push(this.value);
});
var index = layer.load(2);
$.post('/sys/RoleMenu.aspx?action=assign', { roleId: '<%=roleId %>', ck: ckv.join(","), cked: ckedv.join(",") }, function (data) {
layer.close(index);
if (data.reCode > 0) {
window.location.href = '/Sys/ReloList.aspx';
}
else {
$error.html(data.msg);
md.bind({
target: '#md2'
});
}
}, 'json');
});
此处可以看到,在点击保存后,会先获取子菜单的id集合,以及主菜单的id集合,然后将id集合作为参数,传到后台进行保存处理
保存按钮的cs逻辑代码处理如下: [C#] 纯文本查看 复制代码 else if ( "assign" == action ) {
//保存此角色的菜单信息
/*
* 1. 权限处理,如果没有权限,直接返回
* 2. 获取数据
* 3. 保存数据
*/
// 获取数据,角色id合法性校验
var ck = InputHelper.GetInputString( Request[ "ck" ] );
var cked = InputHelper.GetInputString( Request[ "cked" ] );
if ( roleId <= 0 ) {
Response.Write( "{\"reCode\":0,\"msg\":\"角色id不合法\"}" );
Response.End();
return;
}
// 删除以前的角色菜单信息
sys_menuInRoleBll.Delete( string.Format( "RoleID = {0}", roleId ) );
//批量给一级菜单
if ( !string.IsNullOrWhiteSpace( ck ) ) {
//循环添加角色菜单
foreach ( var id in ck.Split( ',' ) ) {
//菜单id合法性校验
int muneId = InputHelper.GetInputInt( id );
if ( muneId > 0 ) {
//新增菜单给此角色
Sys_MenuInRoleInfo addInfo = new Sys_MenuInRoleInfo {
RoleID = roleId,
MenuID = muneId,
levelFlag = 1
};
sys_menuInRoleBll.Insert( addInfo );
}
}
}
//遍历已有菜单列表
foreach ( var id in cked.Split( ',' ) ) {
int muneId = InputHelper.GetInputInt( id );
if ( muneId > 0 ) {
Sys_MenuInRoleInfo addInfo = new Sys_MenuInRoleInfo {
RoleID = roleId,
MenuID = muneId
};
sys_menuInRoleBll.Insert( addInfo );
}
}
Response.Write( "{\"reCode\":1,\"msg\":\"ok\"}" );
Response.End();
}
}
在此处的逻辑如下: * 1. 权限处理,如果没有权限,直接返回 * 2. 获取数据 * 3. 保存数据
注: 在保存数据时,这里的处理操作如下:
1. 先删除原有的角色菜单信息 [C#] 纯文本查看 复制代码 // 删除以前的角色菜单信息
sys_menuInRoleBll.Delete( string.Format( "RoleID = {0}", roleId ) );
2. 遍历获取的菜单id集合,然后循环进行添加 a:批量添加一级菜单 [C#] 纯文本查看 复制代码 //批量给一级菜单
if ( !string.IsNullOrWhiteSpace( ck ) ) {
//循环添加角色菜单
foreach ( var id in ck.Split( ',' ) ) {
//菜单id合法性校验
int muneId = InputHelper.GetInputInt( id );
if ( muneId > 0 ) {
//新增菜单给此角色
Sys_MenuInRoleInfo addInfo = new Sys_MenuInRoleInfo {
RoleID = roleId,
MenuID = muneId,
levelFlag = 1
};
sys_menuInRoleBll.Insert( addInfo );
}
}
}
b: 遍历添加子菜单信息 [C#] 纯文本查看 复制代码 foreach ( var id in cked.Split( ',' ) ) {
int muneId = InputHelper.GetInputInt( id );
if ( muneId > 0 ) {
Sys_MenuInRoleInfo addInfo = new Sys_MenuInRoleInfo {
RoleID = roleId,
MenuID = muneId
};
sys_menuInRoleBll.Insert( addInfo );
}
}
|
|