ASP.NET MVC5+EF6+EasyUI 後臺管理系統-分配角色給使用者
由於之前做了將許可權賦給角色,還需要做將角色組賦給使用者,和將使用者賦給角色組,一個使用者可以擁有多個角色組,一個角色組包含多個使用者,開啟模組管理,新增一個分配的操作碼
並在
角色許可權設定授權給他
在SysUser的Index新增以下按鈕
@Html.ToolButton("btnAllot", "icon-share", "分配角色", perm, "Allot", true)
我們要彈出所有角色的選擇視窗來勾選後儲存。這個大家應該想到了,所以先設定彈出介面的檢視,我命名為GetRoleByUser
所以在SysUser新增以下3個方法
#region 設定使用者角色 [SupportFilter(ActionName= "Allot")] public ActionResult GetRoleByUser(string userId) { ViewBag.UserId = userId; ViewBag.Perm = GetPermission(); return View(); } [SupportFilter(ActionName = "Allot")] public JsonResult GetRoleListByUser(GridPager pager, stringuserId) { if (string.IsNullOrWhiteSpace(userId)) return Json(0); var userList = userBLL.GetRoleByUserId(ref pager,userId); var jsonData = new { total = pager.totalRows, rows = (from r in userList select new SysRoleModel() { Id= r.Id, Name= r.Name, Description = r.Description, Flag = r.flag=="0"?"0":"1", } ).ToArray() }; return Json(jsonData); } #endregion [SupportFilter(ActionName = "Save")] public JsonResult UpdateUserRoleByUserId(string userId, string roleIds) { string[] arr = roleIds.Split(','); if (userBLL.UpdateSysRoleSysUser(userId, arr)) { LogHandler.WriteServiceLog(GetUserId(), "Ids:" + roleIds, "成功", "分配角色", "使用者設定"); return Json(JsonHandler.CreateMessage(1, Suggestion.SetSucceed), JsonRequestBehavior.AllowGet); } else { string ErrorCol = errors.Error; LogHandler.WriteServiceLog(GetUserId(), "Ids:" + roleIds, "失敗", "分配角色", "使用者設定"); return Json(JsonHandler.CreateMessage(0, Suggestion.SetFail), JsonRequestBehavior.AllowGet); } }
GetRoleByUser為彈出檢視
GetRoleListByUser為根據選擇的使用者獲取角色並讓已經分配的角色呈現選擇狀態 (儲存過程實現)
USE [AppDB] GO /****** Object: StoredProcedure [dbo].[P_Sys_GetRoleByUserId] Script Date: 02/21/2014 11:17:38 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Create proc [dbo].[P_Sys_GetRoleByUserId] @UserId varchar(50) as begin --讀取使用者所包含的角色 select a.*,ISNULL(b.SysUserId,0) as flag from SysRole a left join SysRoleSysUser b on a.Id = b.SysRoleId and b.SysUserId = @UserId order by b.SysUserId desc endP_Sys_GetRoleByUserId
UpdateUserRoleByUserId更新選擇的後的情況(儲存過程實現)
Create PROCEDURE [dbo].[P_Sys_UpdateSysRoleSysUser] @roleId varchar(50),@userId varchar(50) AS --更新角色使用者中間關係表 BEGIN insert into SysRoleSysUser(SysRoleId,SysUserId) values(@roleId,@userId) ENDP_Sys_UpdateSysRoleSysUser
儲存過程語句簡短,如果做成linq也好的,但這並不多變,所以我寫成了儲存過程。
可以參考邏輯做成程式。
SysBLL新增以下方法
public IQueryable<P_Sys_GetRoleByUserId_Result> GetRoleByUserId(ref GridPager pager, string userId) { IQueryable<P_Sys_GetRoleByUserId_Result> queryData = sysUserRepository.GetRoleByUserId(db, userId); pager.totalRows = queryData.Count(); queryData = sysUserRepository.GetRoleByUserId(db, userId); return queryData.Skip((pager.page - 1) * pager.rows).Take(pager.rows); } public bool UpdateSysRoleSysUser(string userId, string[] roleIds) { try { sysUserRepository.UpdateSysRoleSysUser(userId, roleIds); return true; } catch (Exception ex) { ExceptionHander.WriteException(ex); return false; } }
SysRepository新增以下對應方法
public IQueryable<P_Sys_GetRoleByUserId_Result> GetRoleByUserId(DBContainer db, string userId) { return db.P_Sys_GetRoleByUserId(userId).AsQueryable(); } public void UpdateSysRoleSysUser(string userId, string[] roleIds) { using (DBContainer db = new DBContainer()) { db.P_Sys_DeleteSysRoleSysUserByUserId(userId); foreach (string roleid in roleIds) { if (!string.IsNullOrWhiteSpace(roleid)) { db.P_Sys_UpdateSysRoleSysUser(roleid,userId); } } db.SaveChanges(); } }
DAL層還用到了一個儲存過程為更新角色使用者中間關係表,前刪除關聯
Create PROCEDURE [dbo].[P_Sys_DeleteSysRoleSysUserByUserId] @userId varchar(50) AS --更新角色使用者中間關係表,前刪除關聯 BEGIN delete SysRoleSysUser where SysUserId=
讓後自行新增介面方法即可
接下來填寫GetRoleByUser檢視程式碼
@using App.Admin; @using App.Common; @using App.Models.Sys; @{ ViewBag.Title = "設定使用者包含的角色"; Layout = "~/Views/Shared/_Index_LayoutEdit.cshtml"; List<permModel> perm = (List<permModel>)ViewBag.Perm; if (perm == null) { perm = new List<permModel>(); } } <div class="mvctool bgb"> @Html.ToolButton("btnSave", "icon-save", "儲存", perm, "Create", true) </div> <div class="pd3"> <table id="UserList"></table> </div> @*Jqgrid*@ <script type="text/javascript"> $(function () { $('#UserList').datagrid({ url: '/SysUser/[email protected](ViewBag.UserId)', width: SetGridWidthSub(6), methord: 'post', height: SetGridHeightSub(41), fitColumns: true, sortName: 'Id', sortOrder: 'desc', idField: 'Id', pageSize: 12, pageList: [12, 20, 30, 40, 50], pagination: true, striped: true, //奇偶行是否區分 singleSelect: true,//單選模式 columns: [[ { field: 'Id', title: 'ID', width: 80, hidden: true }, { field: 'Name', title: '角色名稱', width: 120 }, { field: 'Description', title: '說明', width: 80}, { field: 'Flag', title: '是否分配', width: 80, editor: { type: 'checkbox', options: { on: '1', off: '0' } }} ]], onLoadSuccess: function () { var rows = $("#UserList").datagrid("getRows"); for (var i = 0; i < rows.length; i++) { //獲取每一行的資料 $('#UserList').datagrid('beginEdit', i); } } }); }); </script> @*operation*@ <script type="text/javascript"> $(function () { $("#btnSave").click(function () { var rows = $("#UserList").datagrid("getRows"); //這段程式碼是獲取當前頁的所有行。 var data = new Array(); for (var i = 0; i < rows.length; i++) { var setFlag = $("td[field='Flag'] input").eq(i).prop("checked"); if (setFlag)//判斷是否有作修改 { data.push(rows[i].Id); } } var roleIds = data.join(); //提交資料庫 $.post("/SysUser/UpdateUserRoleByUserId", { userId: '@(ViewBag.UserId)', roleIds: roleIds }, function (data) { if (data.type == 1) { window.parent.frameReturnByMes(data.message); window.parent.frameReturnByReload(true); window.parent.frameReturnByClose() } else { window.parent.frameReturnByMes(data.message); } }, "json"); }); }); </script>View Code
在index新增分配的js程式碼
$("#btnAllot").click(function () { var row = $('#List').datagrid('getSelected'); if (row != null) { $("#modalwindow").html("<iframe width='100%' height='100%' scrolling='auto' frameborder='0' src='/SysUser/GetRoleByUser?userId=" + row.Id + "&Iedate=" + GetGuid() + "'></iframe>"); $("#modalwindow").window({ title: '分配角色', width: 720, height: 400, iconCls: 'icon-edit' }).window('open'); } else { $.messageBox5s('提示', '@Suggestion.PlaseChooseToOperatingRecords'); } });
這時可以顯示一下介面了
新增多幾個角色測試一下。
給大家說一下,大家不要再問我開源不了,不會再發布原始碼包,現原始碼釋出到14講(14講包含了素材js等通用元素),資料庫是17講,在群裡提供下載,之後的文章都是有貼程式碼的,而且易懂,可以組成我釋出的系統完整版
相關推薦
ASP.NET MVC5+EF6+EasyUI 後臺管理系統-分配角色給使用者
系列目錄 由於之前做了將許可權賦給角色,還需要做將角色組賦給使用者,和將使用者賦給角色組,一個使用者可以擁有多個角色組,一個角色組包含多個使用者,開啟模組管理,新增一個分配的操作碼 並在 角色許可權設定授權給他 在SysUser的Index新增以下按鈕 @Html.To
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(1)-前言與目錄(持續更新中...)
編碼規範 圖標 pri log 任務 ros 部署 基本 form 開發工具:VS2015(2012以上)+SQL2008R2以上數據庫 您可以有償獲取一份最新源碼聯系QQ:729994997 價格 666RMB 升級後界面效果如下: 日程管理 http://
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(65)-MVC WebApi 用戶驗證 (1)
screen 屬性 access override jquery true mod 解析 action 系列目錄 前言: WebAPI主要開放數據給手機APP,其他需要得知數據的系統,或者軟件應用,所以移動端與系統的數據源往往是相通的。 Web 用戶的身份驗證,及
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(4)-創建項目解決方案
構建 文章 數據庫 操作 webapi http 業務 pps 技術分享 系列目錄 前言 為了符合後面更新後的重構系統,文章於2016-11-1日重寫 設計中術語,概念這種東西過於模糊,我們必須學習累積才能認識這些概念模型。 我無法用文章來下詳細解析此系統的深層概念,需要
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(87)-MVC Excel導入和導出
.net本文示例代碼下載: 鏈接:http://pan.baidu.com/s/1jHBdgCA 密碼:hzh7ps:Vs數據庫腳本在解壓目錄下,修改web.config數據庫鏈接,示例代碼包含:導入,導出,上傳前言:導入導出實在多例子,很多成熟的組建都分裝了導入和導出,這一節演示利用LinqToExcel組
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(62)-EF鏈接串加密
image title orm mst .... 比較 string類 sin isn 前言: 這一節提供一個簡單的功能,這個功能看似簡單,找了一下沒找到EF鏈接數據庫串的加密幫助文檔,只能自己寫了,這樣也更加符合自己的加密要求 有時候我們發布程序為了避免程序外的
ASP.NET MVC5+EF6+EasyUI 後臺管理系統-WebApi的用法與除錯
以往我們講了WebApi的基礎驗證,但是有新手經常來問我使用的方式 這次我們來分析一下程式碼的用法,以及除錯的方式 WebApi在一些場景我們會用到,比如: 1.對接各種客戶端(移動裝置) 2.構建常見的http微服務 3.開放資料 4.單點登陸 等...
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(88)-Excel匯入和匯出-主從表結構匯出
前言 前面一篇詳細講解了匯入匯出,本節演示混合結構的匯出功能!同時提供程式碼下載.. 先看效果圖:這個一個混合的Excel,列表與自定義資訊的混合! 我們的步驟大概分為以下幾步 1.模擬資料庫資料 2.建立工作簿 3.填充固定資料 4.合併單元格 5.處理動態資料
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(17)-LinQ動態排序
系列目錄 首先修復程式中的一個BUG這個BUG在GridPager類中,把sord修改為sort這個名稱填寫錯誤,會導致後臺一直無法獲取datagrid的排序欄位 本來是沒有這一講的,為了使20行的程式碼精簡成2行,我查閱了一些資料,借鑑了一些大神的建議,首先感謝第八講中,1
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(20)-許可權管理系統-根據許可權獲取選單
系列目錄 不知不覺到20講,真是漫長的日子,可惜最近工作挺忙,要不可以有更多的時間來更新,多謝大家的一路支援.如果你覺得好,記得幫我點選推薦^-^ 我們在之前已經插入一些真實資料,其中包含了一個使用者和樣例程式SysSample的許可權,並實現了使用者的登入。 但有的朋友對錶
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(90)-EF 批量操作
這次我們來看 EntityFramework-Plus(免費開源) 庫的用法相比其他擴充套件庫,這個更加新並且用法更加簡單這是一個對Entity Framework進行擴充套件的類庫.支援EF EF5, EF6, EF Core,來彌補EF目前的短板GitHub地址 http
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(5)-EF增刪改查
using System; using System.Collections.Generic; using System.Linq; using Apps.Models; using Apps.Common; using Apps.IBLL; using Apps.IDAL; using Apps.DAL;
ASP.NET MVC5+EF6+EasyUI 後臺管理系統 (原始碼購買說明)
系列目錄 方便朋友獲取一個開發框架,無論是開發還是學習用途將受益匪淺,出售此框架原始碼價格666,終身免費升級,線上解答問題 您可以通過QQ 729994997 聯絡我 2017-11-10 更新:
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(33)-MVC 表單驗證
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; u
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(89)-國際化,本地化,多語言應用
開篇 早年寫過一篇多語言的應用 : 本地化(多語言) 講述瞭如何建立多語言的資原始檔,並利用資原始檔來獲得頁面和請求的語言屬性 本次補充這篇文章,的原因是在實際專案中,有多種需要多語言的情況 比如:日誌要根據當前語言顯示 而有些情景比較複雜,我們可能的key是
構建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x註入的後臺管理系統(66)-MVC WebApi 用戶驗證 (2)
簡單 權限管理 mark 調用接口 cat pps 總結 回顧 bsp 前言: 構建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x註入的後臺管理系統(65)-MVC WebApi 用戶驗證 (1) 回顧上一節,我們利用w
ASP.net和EasyUI後臺管理系統
後臺系統登入介面 後臺功能操作介面 本人承接類似中小型後臺管理系統的開發,或者類似的畢業設計,有需要的加QQ:3059233967,價格面議。 前臺技術:JQuery EasyUI,ASP.Net 資料庫:SQLServer2008
win10+vs2017+asp.net MVC5+EF6+mysql 閃退問題,解決方法
mvc connect mysql data -c 選中 nec 中項 安裝 1.安裝 mysql-for-visualstudio-2.0.5.msi 2.安裝 mysql-connector-net-6.10.7.msi 3.在VS2017 右鍵選中項目,管理NuG
【親測】Asp.net Mvc5 + EF6 code first 方式連接MySQL總結
save created eof 節點配置 posit 創建 img from 建立連接時 本文原文地址為:https://www.cnblogs.com/summit7ca/p/5423637.html 原文測試環境為windows 8.1+Vs2013+MySql5.7
基於ASP.NET的高校輔導員工作管理系統的設計與實現--論文隨筆(四)
一、基本資訊 標題:基於ASP.NET的高校輔導員工作管理系統的設計與實現 時間:2017 出版源:南通理工學院 關鍵詞:ASP.NET; SQL Server; 高校; 管理系統; 輔導員; 二、研究背景 問題定義:高校學生數量越來越多,學生資訊也越來越龐大,在輔導員的日常工作中,所使用的傳統的電子表