说一说MVC的MenuCard(五)
1.数据库设计
create database BookShop
go use bookshop
go --模块表
create table Module
(
ModuleID int not null primary key identity(1,1),
ModuleName varchar(50) not null unique,
ModuleIcon varchar(20) not null default '',
) -- 功能表 Menu
create table Menu
(
MenuID int not null primary key identity(1,1),
MenuName varchar(50) not null unique,
MenuIcon varchar(20) not null default '',
CtrlName varchar(50) not null, -- 对应的 控制器名称 BookController
ModuleID int not null foreign key references Module(ModuleID) --
) -- 方法函数表 Action
create table [Action]
(
ActionID int not null primary key identity(1,1),
ActionName varchar(50) not null unique,
ActionIcon varchar(20) not null default '',
ActName varchar(50) not null ,
MenuID int not null foreign key references Menu(MenuID) --
) create table [Role]
(
RoleID int not null primary key identity(1,1),
RoleName varchar(20) not null unique,
[Description] varchar(100) not null default '没描述'
) create table [User]
(
UserID int not null primary key identity(1,1),
LoginName varchar(20) not null unique, --登录名
UserName varchar(20) not null , --真实姓名
[Password] varchar(20) not null, ) create table UserRole --用户和角色的关系表
(
RoleID int not null foreign key references [Role](RoleID),
UserID int not null foreign key references [User](UserID)
) alter table UserRole
add constraint PK_UserRole primary key (RoleID,UserID) go create table RoleAction -- 角色 方法 关系表
(
RoleID int not null foreign key references [Role](RoleID),
ActionID int not null foreign key references [Action](ActionID)
) alter table RoleAction
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>
说一说MVC的MenuCard(五)的更多相关文章
- ASP.NET MVC Model验证(五)
ASP.NET MVC Model验证(五) 前言 上篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现, 然而在MVC框架中还给我们提供了其它 ...
- ASP.NET MVC Model绑定(五)
ASP.NET MVC Model绑定(五) 前言 前面的篇幅对于IValueProvider的获取位置和所处的生成过程做了讲解,本篇将会对IValueProvider的使用做个基础的示例讲解,读完本 ...
- ASP.NET MVC Model元数据(五)
ASP.NET MVC Model元数据(五) 前言 在上一篇中我们描述了应用于Model上面的各种用于显示控制的特性类,在本篇中将详细的介绍这些特性类的应用,虽然它们跟Model元数据的直接关系并不 ...
- Mvc项目实例 MvcMusicStore 五
Mvc项目实例 MvcMusicStore 一Mvc项目实例 MvcMusicStore 二Mvc项目实例 MvcMusicStore 三Mvc项目实例 MvcMusicStore 四Mvc项目实例 ...
- 2017.3.31 spring mvc教程(五)Action的单元测试
学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...
- ASP.NET MVC学习(五)之MVC原理解析
ASP.NET MVC 请求生命周期 生命周期步骤概览 当我们对ASP.NET MVC网站发出一个请求的时候,会发生5个主要步骤: 步骤1:创建RouteTable 当ASP.NET应用程序第一次启动 ...
- ASP.NET MVC学习---(五)MVC初体验
经过之前n多的铺垫 我们已经大概了解了这个姓m名vc的家伙了 那么今天我们就来体验一把 怎么体验呢? 就来做一个小例子吧~ mvc增删改查的例子 数据库还是之前我们的老朋友 关系图: 表中的数据已填好 ...
- MVC系列学习(十五)-验证码
1.方式一: public class VCode { /// <summary> /// 生成验证码图片 字节数组 /// </summary> /// <return ...
- Spring MVC学习(五)---ModelAndView没有明显申明name
看图不解释: 对于这种写法: new ModelAndView().addObject(XXX)
随机推荐
- 如何明确区分代码中的1和l
如poly1d 单独将其复制到记事本,然后按ctrl+F,输入要查找的对象,数字1或者小写字母l,找到的对象会已高亮表示,所以就可以确定了高亮表示的是数字1还是字母l.
- Java类是如何默认继承Object的
前言 学过Java的人都知道,Object是所有类的父类.但是你有没有这样的疑问,我并没有写extends Object,它是怎么默认继承Object的呢? 那么今天我们就来看看像Java这种依赖于虚 ...
- buils tool是什么?为什么使用build tool?java主流的build tool
定义: build tool是可以自动由源代码创建可执行的应用程序的程序. Building 包括编译.链接和打包代码成一个可用的或可执行形式. 在小型项目,开发人员常常会手动调用构建过程.在更大的项 ...
- 1.3 正则表达式和Python语言-1.3.5使用 search()在一个字符串中查找模式(搜索与匹配 的对比)
1.3.5 使用 search()在一个字符串中查找模式(搜索与匹配的对比) 其实,想要搜索的模式出现在一个字符串中间部分的概率,远大于出现在字符串起始部分的概率.这也就是 search()派上用场的 ...
- Typescript骚操作,在TS里面直接插入HTML
Typescript骚操作,在TS里面直接插入HTML,还有语法提示 先给大家看一个图 因为我不喜欢用很重的框架,主要是并非专业UI,但是偶尔会用到,还是觉得直接element组装受不了,想想能在ts ...
- Spark环境搭建(七)-----------spark的Local和standalone模式启动
spark的启动方式有两种,一种单机模式(Local),另一种是多机器的集群模式(Standalone) Standalone 搭建: 准备:hadoop001,hadoop002两台安装spark的 ...
- DWM1000 帧过滤代码实现
帧过滤功能可以在同一个环境内组建多个网络而不干扰(非频段不同),可以通过PANID(网络ID)区分不同网络,不同网络中的模块无法直接通信, 再之,利用短地址,网络中可以同时有多个模块发送信息,而接收端 ...
- pta-树种统计
树种统计 (25 分) 随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类.请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比. 输入格式: 输入首先给出正整数N(≤105 ...
- Chrome 启动全屏,并可以F11退出
新建start.bat文件,作用,打开浏览器,并模拟按下F11,全屏,内容如下: start C:\Program" "Files" "(x86)\Google ...
- vue项目中的相关插件
所有安装都是cd到该项目目录中安装 -S代表将插件添加到项目中的package.json文件 1.iview 是一套基于 Vue.js 的开源 UI 组件库,主要服务于 PC 界面的中后台产品 cnp ...