您的位置:首页 > 其它

说一说MVC的MenuCard(五)

2018-08-27 21:49 232 查看
1.数据库设计

1
2  create database BookShop
3  go
4
5  use bookshop
6  go
7
8 --模块表
9 create table Module
10 (
11     ModuleID int not null primary key identity(1,1),
12     ModuleName varchar(50) not null  unique,
13     ModuleIcon varchar(20) not null default '',
14 )
15
16
17 -- 功能表 Menu
18 create table Menu
19 (
20     MenuID int not null primary key identity(1,1),
21     MenuName varchar(50) not null  unique,
22     MenuIcon varchar(20) not null default '',
23     CtrlName varchar(50) not null, -- 对应的 控制器名称    BookController
24     ModuleID int not null foreign key references Module(ModuleID)  --
25 )
26
27 -- 方法函数表 Action
28 create table [Action]
29 (
30     ActionID int not null primary key identity(1,1),
31     ActionName varchar(50) not null  unique,
32     ActionIcon varchar(20) not null default '',
33     ActName varchar(50) not null ,
34     MenuID int not null foreign key references Menu(MenuID)  --
35 )
36
37
38
39 create table [Role]
40 (
41     RoleID int not  null primary key identity(1,1),
42     RoleName varchar(20) not null unique,
43     [Description] varchar(100) not null default '没描述'
44 )
45
46 create table [User]
47 (
48     UserID int not  null primary key identity(1,1),
49     LoginName varchar(20) not null unique,        --登录名
50     UserName varchar(20) not null ,        --真实姓名
51     [Password] varchar(20) not null,
52
53 )
54
55
56 create table UserRole  --用户和角色的关系表
57 (
58     RoleID int not null foreign key references [Role](RoleID),
59     UserID int not null foreign key references [User](UserID)
60 )
61
62
63 alter table UserRole
64 add constraint PK_UserRole primary key (RoleID,UserID)
65
66 go
67
68 create table RoleAction -- 角色 方法 关系表
69 (
70     RoleID int not null foreign key references [Role](RoleID),
71     ActionID int not null foreign key references [Action](ActionID)
72 )
73
74 alter table RoleAction
75 add constraint PK_RoleAction primary key (RoleID,ActionID)


2.实体类

public class ModuleVM
{
public ModuleVM()
{
menuVms = new List<MenuVm>();
}
public string ID { get; set; }
public string Name { get; set; }
public List<MenuVm> menuVms { get; set; }
}
public class MenuVm
{
public MenuVm()
{
actions = new List<ActionVm>();
}
public int ID { get; set; }
public string Name { get; set; }
public string ctrName { get; set; }
public List<ActionVm> actions { get; set; }
}
public class ActionVm
{
public int ID { get; set; }
public string Name { get; set; }

public string ActName { get; set; }
}


3.模板页面代码

@using PowerDemo.Models
@using Action= PowerDemo.Models.Action
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - 我的 ASP.NET 应用程序</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("应用程序名称", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("主页", "Index", "Home")</li>
<li>@Html.ActionLink("关于", "About", "Home")</li>
<li>@Html.ActionLink("联系方式", "Contact", "Home")</li>
</ul>
</div>
</div>
</div>
<div class="container body-content">
<div class="row">
<div  class="col-md-3">
@{
User loginuser = Session["User"] as User;
BookShopEntities DB = new BookShopEntities();
List<ModuleVM> list = new List<ModuleVM>();
foreach (Role role in loginuser.Role)
{
foreach (Action action in role.Action)
{
MenuVm mvm = new MenuVm()
{
ID = action.Menu.MenuID,
Name = action.Menu.MenuName,
ctrName = action.Menu.CtrlName.Replace("Controller","")
};
ActionVm avm = new ActionVm()
{
ID = action.ActionID,
Name = action.ActionName,
ActName = action.ActName
};
mvm.actions.Add(avm);
ModuleVM module = list.FirstOrDefault(mo => mo.ID==action.Menu.Module.ModuleID.ToString());
if (module==null)
{
module = new ModuleVM()
{
ID = action.Menu.Module.ModuleID.ToString(),
Name = action.Menu.Module.ModuleName,
};
list.Add(module);
}
module.menuVms.Add(mvm);
}
}
}
<ul class="list-group">
@foreach (ModuleVM module in list)
{
<li class="list-group-item">
@module.Name
<ul class="list-group">
@foreach (MenuVm menu in module.menuVms)
{
<li class="list-group-item">
@menu.Name
<div class="list-group">
@foreach (ActionVm a in menu.actions)
{
<a class="list-group-item" href="/@menu.ctrName/@a.ActName">@a.Name</a>
}
</div>
</li>
}
</ul>
</li>
}
</ul>
</div>
<div class="col-md-12">@RenderBody()</div>
</div>
<hr />
<footer>
<p>© @DateTime.Now.Year - 我的 ASP.NET 应用程序</p>
</footer>
</div>

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: