Abp添加菜单
Abp添加菜单
在abp模板中添加菜单,EntityFramework+Angular.js模板,使用的Abp版本为3.8.1。
创建Abp项目模板,例如名称叫做LawAndRegulation。
服务端添加菜单项
找到Mpa或者Spa项目,也就是LawAndRegulation.WebMpa或者LawAndRegulation.WebSpaAngular。
项目中找到LawAndRegulationNavigationProvider类,在类中找到SetNavigation方法,按照模板中提供的菜单添加方法添加MenuItemDefinition。
MenuItemDefinition即为我们需要添加的菜单项,菜单项包含几个重要的属性:
- 【name】,菜单项名称,在View层添加菜单项时对应的名称;
- 【displayName】,显示名称,本地化显示在名称,也就是多语言需要解释的名称;
- 【url】,导航的路由名称;
- 【icon】,图标名称;
- 【requireAuthentication】,登陆认证及权限认证;
设置好这几项后在服务端导航的内容已经设置完成。
示例代码:
public class LawAndRegulationNavigationProvider : NavigationProvider
{
public override void SetNavigation(INavigationProviderContext context)
{
context.Manager.MainMenu
.AddItem(
new MenuItemDefinition(
"DictionaryManager",
L("DictionaryManager"),
url: "#DictionaryManager",
icon: "fa fa-info",
requiresAuthentication: true
)
);
} private static ILocalizableString L(string name)
{
return new LocalizableString(name, LawAndRegulationConsts.LocalizationSourceName);
}
}
客户端添加菜单
在LawAndRegulation.WebSpaAngular项目中找到App/Main/views/layout/sidebar-nav.js文件,在文件中编辑属性menuItems,属性menuItems为数组,在数组中添加对象通过createMenuItem方法,方法中参数:
- 1.本地化标题;
- 2.权限名称;
- 3.图标名称;
- 4.路由名称,也可以是Url链接;
- 5.子项集合,可选参数;
实例代码:
vm.menuItems = [
createMenuItem(App.localize("HomePage"), "", "home", "home"),
createMenuItem(App.localize("Tenants"), "Pages.Tenants", "business", "tenants"),
createMenuItem(App.localize("Users"), "Pages.Users", "people", "users"),
createMenuItem(App.localize("Roles"), "Pages.Roles", "local_offer", "roles"),
createMenuItem(App.localize("LawAndRegulation"), "", "info", "LawAndRegulation"),
createMenuItem(App.localize("About"), "", "info", "about")
];
其中LawAndRegulation为我们添加的菜单项。
客户端添加路由
在WebSpaAngular项目中找到app.js文件,app.js文件在App/Mian/路径下。
找到app.config,在function方法中找到回调函数中$stateProvider参数,调用参数的state方法。
state方法有两个参数:
- 【navigationName】字符串,导航名称;
- 【route】对象,对象包含三个属性,服务端Url、客户端页面Url以及菜单名称(本地化的名称);
设置完以上,客户端路由已经设置完成。
实例代码如下:
$stateProvider
.state('DictionaryManager', {
url: '/DictionaryManger',
templateUrl: '',
menu:'DictionaryManager'
});
添加多级菜单
服务器端
服务器端添加多级菜单非常方便,只需要调用MenuItemDefinition的方法AddItem,在第一节内容基础上扩展,代码如下:
public class LawAndRegulationNavigationProvider : NavigationProvider
{
public override void SetNavigation(INavigationProviderContext context)
{
context.Manager.MainMenu
.AddItem(
new MenuItemDefinition(
"DictionaryManager",
L("DictionaryManager"),
url: "#DictionaryManager",
icon: "fa fa-info",
requiresAuthentication: true
).AddItem(
new MenuItemDefinition(
"Law",
L("Law"),
url: "#Law",
icon: "fa fa-info",
requiresAuthentication: true))
)
);
} private static ILocalizableString L(string name)
{
return new LocalizableString(name, LawAndRegulationConsts.LocalizationSourceName);
}
}
客户端添加路由
在第二节基础上扩展app.js文件中关于路由的内容,代码如下:
$stateProvider
.state('DictionaryManager', {
url: '/DictionaryManger',
templateUrl: '',
menu:'DictionaryManager'
})
.state('Law', {
url: '/Law',
templateUrl: '/App/Main/views/LawAndRegulation/index.cshtml',
menu: 'Law'
});
客户端添加多级菜单
在第三节的基础上添加客户端多级菜单,多级客户端菜单其实就是在最后一个参数内添加一个菜单项数组:
vm.menuItems = [
createMenuItem(App.localize("HomePage"), "", "home", "home"),
createMenuItem(App.localize("Tenants"), "Pages.Tenants", "business", "tenants"),
createMenuItem(App.localize("Users"), "Pages.Users", "people", "users"),
createMenuItem(App.localize("Roles"), "Pages.Roles", "local_offer", "roles"),
createMenuItem(App.localize("LawAndRegulation"), "", "info", "LawAndRegulation",
[createMenuItem(App.localize("Law"), "", "info", "Law")]),
createMenuItem(App.localize("About"), "", "info", "about")
];
Abp添加菜单的更多相关文章
- abp添加动态菜单
abp中MenuDefinition封装了导航栏上的主菜单的属性,MenuItemDefinition则封装了子菜单的属性,子菜单可以引用其他子菜单构成一个菜单树. MenuDefinitio成员如下 ...
- abp实战-ContosoUniversity Abp版-2添加菜单与创建实体
这里略过理论篇,但需要了解abp分层,对于小项目来说abp分层有点复杂,这里只是演示,个别地方没有完全按照ddd理论去写,后期我将会完善. 1. 创建ContosoUniversity相关功能的菜单 ...
- .net core3.1 abp动态菜单和动态权限(动态菜单实现和动态权限添加) (三)
我们来创建动态菜单吧 首先,先对动态菜单的概念.操作.流程进行约束:1.Host和各个Tenant有自己的自定义菜单2.Host和各个Tenant的权限与自定义菜单相关联2.Tenant有一套默认的菜 ...
- Qt自适应大小显示图片,添加菜单
由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的.听同学说Qt不错,就用Qt做UI了. 本文主要介绍三个内容:在Qt Creator中使用OpenCV2.Qt中自适应显示图片 ...
- MFC 对话框添加菜单
1.在Resource View 里右击菜单里选择Add Resource,选择menu,添加一个IDR_MENU1的菜单.在编辑器编辑菜单,添加菜单项,命名各个菜单项的ID. 2.在所要添加菜单的对 ...
- 【Android】添加菜单和监听菜单方法详解
添加菜单 可以在onCreateOptionsMenu或者onPrepareOptionsMenu方法中来添加菜单 代码添加: menu.add((int groupId, int itemId, i ...
- WordPress插件制作教程(三): 添加菜单的方法
上一篇编写了一个简单的插件,让大家对插件的简单制作有个了解,这一篇我们在更深一步,当我们激活插件后后台会显示菜单出来,然后通过单击菜单显示自己定义好的信息.激活之后会在WordPress后台显示一个菜 ...
- EcShop后台添加菜单[步骤]
1. 添加菜单的链接地址:打开文件[/后台目录/includes/inc_menu.php],在结尾加入例如:$modules['dashi']['dashi_list'] = 'join_dashi ...
- menuStrip1动态添加菜单及快捷键
public partial class FormMkTest : Form { public FormMkTest() { InitializeComponent(); } private void ...
随机推荐
- Spring ApplicationContext(一)初始化过程
Spring 容器 ApplicationContext(一)初始化过程 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) ...
- vuejs导航条动态切换active状态
用一个数组存导航条,用v-for循环它,这样可以减少代码,二可以使用它的下标来判断高亮,三还可以获取后端的导航信息来遍历 重点是在:routerLink(index, path)函数,传入当前点击的下 ...
- C#动态显示时间
private void timer1_Tick(object sender, EventArgs e) { DateTime dt = DateTime.Now; label1.Text = dt. ...
- kbmMW均衡负载与容灾(3)(转载红鱼儿)
在kbmMW均衡负载与容灾(1)中,介绍了利用ClientTransport的OnReconnect事件,对联接的应用服务器的地址进行更换,做容灾处理.实际上,作者还给我们提供了另外一种机制,直接在C ...
- 2018.10.30 uoj#273. 【清华集训2016】你的生命已如风中残烛(组合数学)
传送门 组合数学妙题. 我们把这mmm个数都减去111. 然后出牌的地方就变成了−1-1−1. 然后发现求出每个位置的前缀和之后全部都是非负数. 考虑在最后加入一个−1-1−1构成一个m+1m+1m+ ...
- B+树和LSM比较(转)
出处:https://blog.csdn.net/u013928917/article/details/75912045 B+树和LSM比较 在关系型数据库mysql中普遍使用B+树作为索引,在实际中 ...
- n维向量空间W中有子空间U,V,如果dim(U)=r dim(V)=n-r U交V !={0},那么U,V的任意2组基向量的组合必定线性相关
如题取U交V中的向量p (p!=0), 那么p可以由 U中的某一组基线性组合成(系数不全是零),同时,-p也可以由V中的某一组基线性组合成(系数不全为零) 考察p+(-p)=0 可知道,U中的这组基跟 ...
- 使用Wireshark分析网络数据
一. Wireshark中查看TCP的三次握手和四次挥手: 上面的数据发送和接收两部分的info提示都是 [TCP segment of a reassembled PDU],网上的解释是TCP分片的 ...
- related work
Traditional approaches, e.g., genetic algorithm (GA) [2] and ant colony optimization (ACO) [3], can ...
- linux利用命令将一个盘上的所有复制到另一个盘上
1.fdisk -l 查看硬盘状况 2.将目标盘利用mount挂载 3.查看硬盘使用状况,看目标盘是否有足够的空间:df -h 4.如果足够,利用dd命令将源盘数据拷贝到目标盘:dd if=/dev/ ...