ASP.NET MVC5+EF6+EasyUI 後臺管理系統(20)-許可權管理系統-根據許可權獲取選單
不知不覺到20講,真是漫長的日子,可惜最近工作挺忙,要不可以有更多的時間來更新,多謝大家的一路支援.如果你覺得好,記得幫我點選推薦^-^
我們在之前已經插入一些真實資料,其中包含了一個使用者和樣例程式SysSample的許可權,並實現了使用者的登入。
但有的朋友對錶還是有疑惑,通過下面的linq查詢,應該你就沒有這個困惑了。
不出意外,我們的選單欄將只顯示樣例程式這個模組。
這就簡單了,我們已經有了獲取選單欄的類了,只要加入使用者參與判斷即可,所以我們將修改
IBLL BLL IDAL DAL層的Home類(紅色為原來的,綠色為最新修改的)
List<SysModule> GetMenuByPersonId(string moduleId);
List<SysModule> GetMenuByPersonId(string personId, string moduleId);
---------------------------
public List<SysModule> GetMenuByPersonId(string moduleId)
{
return HomeRepository.GetMenuByPersonId(moduleId);
}
public List<SysModule> GetMenuByPersonId(string personId, string moduleId)
{
return HomeRepository.GetMenuByPersonId(personId,moduleId);
}
---------------------------
List<SysModule> GetMenuByPersonId(string moduleId);
List<SysModule> GetMenuByPersonId(string personId, string moduleId);
---------------------------
最後看到DAL層,這裡是獲取選單邏輯程式碼
public List<SysModule> GetMenuByPersonId(string moduleId)
{
using (DBContainer db = new DBContainer())
{
var menus =
(
from m in db.SysModule
where m.ParentId == moduleId
where m.Id != "0"
select m
).Distinct().OrderBy(a=>a.Sort).ToList();
return menus;
}
}
public List<SysModule> GetMenuByPersonId(string personId, string moduleId)
{
using (DBContainer db = new DBContainer())
{
var menus =
(
from m in db.SysModule
join rl in db.SysRight
on m.Id equals rl.ModuleId
join r in
(from r in db.SysRole
from u in r.SysUser
where u.Id == personId
select r)
on rl.RoleId equals r.Id
where rl.Rightflag == true
where m.ParentId == moduleId
where m.Id != "0"
select m
).Distinct().OrderBy(a => a.Sort).ToList();
return menus;
}
}
最後更該controller的home方法GetTree
/// <summary> /// 獲取導航選單 /// </summary> /// <param name="id">所屬</param> /// <returns>樹</returns> public JsonResult GetTree(string id) { if (Session["Account"] != null) { AccountModel account = (AccountModel)Session["Account"]; List<SysModule> menus = homeBLL.GetMenuByPersonId(account.Id, id); var jsonData = ( from m in menus select new { id = m.Id, text = m.Name, value = m.Url, showcheck = false, complete = false, isexpand = false, checkstate = 0, hasChildren = m.IsLast ? false : true, Icon = m.Iconic } ).ToArray(); return Json(jsonData, JsonRequestBehavior.AllowGet); } else { return Json("0", JsonRequestBehavior.AllowGet); } }
預覽下效果
果真是我們要的效果
現在要做的就是把之前那些日誌管理,異常管理等等加入到資料表中看看效果了。
通過這裡你可以熟悉下資料流。
但我總覺得上面的linq語句是可以繼續優化的,求linq大神!!!!
相關推薦
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 後臺管理系統-分配角色給使用者
系列目錄 由於之前做了將許可權賦給角色,還需要做將角色組賦給使用者,和將使用者賦給角色組,一個使用者可以擁有多個角色組,一個角色組包含多個使用者,開啟模組管理,新增一個分配的操作碼 並在 角色許可權設定授權給他 在SysUser的Index新增以下按鈕 @Html.To
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 MVC5系列之~~~2.檢視篇(上)---包含XSS防禦和非同步分部檢視的處理
其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正) 4.共用其他檢視 不同控制器渲染同一個檢視檔案。這個應用場景還是比較多的,比如同樣是Article的集合,一個是顯示最新文章列表,一個是顯示文章列表,一個是顯示編輯推薦文章列表,基
探索ASP.NET MVC5系列之~~~3.檢視篇(下)---包含常用表單和暴力解猜防禦
其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正) 這幾天忙著幫別人普及安全,今天就把這篇文章結束掉,明天講下 “過度提交” 的防禦。這次開篇就激烈點==》爆破演示: 開啟Burp 設定監聽埠==》8080 設定一下代理:
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