当前位置: 首页 > news >正文

铁路建设监理协会官方网站北京制作网站公司排名

铁路建设监理协会官方网站,北京制作网站公司排名,搜索引擎优化结果,自己做网站成本ABP入门系列目录——学习Abp框架之实操演练源码路径#xff1a;Github-LearningMpaAbp 完成了增删改查以及页面展示#xff0c;这一节我们来为任务清单添加【导航菜单】。 在以往的项目中#xff0c;大家可能会手动在layout页面中添加一个a标签来新增导航菜单#xff0c;这… ABP入门系列目录——学习Abp框架之实操演练源码路径Github-LearningMpaAbp 完成了增删改查以及页面展示这一节我们来为任务清单添加【导航菜单】。 在以往的项目中大家可能会手动在layout页面中添加一个a标签来新增导航菜单这也是一种方式但是如果要针对不同用户不同权限决定是否显示某个菜单那么直接在layout页面中去控制就不方便了。 不过ABP已经为大家考虑了这一点集成了通用的创建和显示菜单的方式。其主要代码集成在Abp.Application.Navigation命名空间下相应源码在此。 下面我们就来梳理下导航菜单是如何实现和使用。 一、如何使用Abp集成的导航菜单 针对我们的『任务清单』Deom我们需要在导航栏上添加一个【Task List】的菜单入口。 1.打开web展现层定位到App_Start/xxxNavigationProvider.cs。 public class LearningMpaAbpNavigationProvider : NavigationProvider{public override void SetNavigation(INavigationProviderContext context){context.Manager.MainMenu.AddItem(new MenuItemDefinition(Home,L(HomePage),url: ,icon: fa fa-home,requiresAuthentication: true)).AddItem(new MenuItemDefinition(Tenants,L(Tenants),url: Tenants,icon: fa fa-globe,requiredPermissionName: PermissionNames.Pages_Tenants)).AddItem(new MenuItemDefinition(Users,L(Users),url: Users,icon: fa fa-users,requiredPermissionName: PermissionNames.Pages_Users)).AddItem(new MenuItemDefinition(About,L(About),url: About,icon: fa fa-info));} }该文件中默认定义了Home、Tenants、Users、About四个菜单。注意观察的话想必会注意到Home菜单设置了requiresAuthentication: true即只有登陆后才会显示该菜单。Tenants和Users菜单设置了requiredPermissionName属性即用户具有指定的权限时才显示菜单。About菜单没有限制默认显示。 每一个菜单项都是一个MenuItemDefinition其中主要包括Name唯一名称DisplayName本地化显示名称Url菜单跳转Icon指定菜单图标。 解释到这里大家自己都可以依葫芦画瓢新增菜单了。 2.添加[Task List]菜单项 AddItem(new MenuItemDefinition(TaskList,L(Task List),url: Tasks/Index,icon: fa fa-tasks,requiresAuthentication: true)保存刷新页面即可看到新增的[Task List]菜单了。 PS:之所以页面上会显示为[Task List]是因为我们并没有维护本地化资源文件。在对应的本地化配置文件中新增名为Task List的即可。比如在中文的本地化文件中添加text nameTask List value任务清单 /重新启站点将语言切换为中文。 二、Abp集成的导航菜单的代码结构 1.先来看看相关代码的类型依赖关系图 类型依赖关系图 分析发现abp集成的导航菜单实际上是应用了组合设计模式。 其中MenuDefinition为根节点MenuItemDefinition为树枝节点其中MenuItemDefinition中也维护了一个ListMenuItemDefinition的集合当集合为空时MenuItemDefinition即为树叶节点。 2.从图中可以看出主要是由以下几部分组成 MenuDefinition/MenuItemDefinition菜单/菜单项定义。其中菜单项包括Name唯一名称DisplayName本地化显示名称Url菜单跳转Icon指定菜单图标。此外可以通过指定RequiresAuthenticationtrue来限制菜单项只有对登录用户可见同时也可以指定RequiredPermissionName来限定当用户有某个权限时菜单才可见。UserMenu/UserMenuItem封装了用于显示给用户的菜单/子菜单集合。INavigationConfiguration/NavigationConfiguration导航配置维护了NavigationProvider的列表。NavigationProviderProvider模式将api的定义和实现分离。抽象类定义了SetNavigation方法在需要设置导航的项目中实现该类并在对应的模块中PreInitialize方法中注册***NavigationProvider的实现。INavigationManager/NavigationManager其中接口中定义了一个Dictionary用来存储应用程序中定义的所有菜单项和一个MainMenu。注入了对INavigationConfiguration的引用以便在NavigationManager中的Initialize方法遍历INavigationConfiguration配置的NavigationProvider列表进行菜单的初始化。IUserNavigationManager/UserNavigationManager是对NavigationManager的一次封装。其中接口中定义了GetMenuAsync的重载方法用来获取指定用户的菜单。INavigationProviderContext/NavigationProviderContext封装了INavigationManager的上下文类用于传参。三、Abp集成的导航菜单的具体实现 核心逻辑NavigationManager遍历NavigationConfiguration中维护的NavigationProvider列表并调用NavigationProvider实现的SetNavigation方法来完成导航菜单的初始化。 NavigationManager负责初始化菜单 NavigationManager.cs NavigationConfiguration负责维护NavigationProvider的实现列表。 NavigationConfiguration.cs 具体的NavigationProvider的实现 xxxxNavigationProvider.cs 在对应的模块中注册具体的NavigtionProvider到INavigationConfiguration维护的列表中。 xxxxAbpWebModule.cs UserNavigationManager对NavigationManager进行了进一步的封装根据用户和权限去创建和获取菜单。 IUserNavigationManager.cs 在LayoutController中通过注入对IUserNavigationManager的引用来获取菜单并由_TopMenu分部页进行最终呈现。 public class LayoutController : LearningMpaAbpControllerBase{private readonly IUserNavigationManager _userNavigationManager;private readonly ISessionAppService _sessionAppService;private readonly IMultiTenancyConfig _multiTenancyConfig;private readonly ILanguageManager _languageManager;public LayoutController(IUserNavigationManager userNavigationManager, ISessionAppService sessionAppService, IMultiTenancyConfig multiTenancyConfig,ILanguageManager languageManager){_userNavigationManager userNavigationManager;_sessionAppService sessionAppService;_multiTenancyConfig multiTenancyConfig;_languageManager languageManager;}[ChildActionOnly]public PartialViewResult TopMenu(string activeMenu ){var model new TopMenuViewModel{MainMenu AsyncHelper.RunSync(() _userNavigationManager.GetMenuAsync(MainMenu, AbpSession.ToUserIdentifier())),ActiveMenuItemName activeMenu};return PartialView(_TopMenu, model);} }至此我们完成了对导航菜单的梳理和总结。 11人点赞 Abp架构入门系列 作者圣杰 链接https://www.jianshu.com/p/24e6f6e8dbdb 来源简书 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。
http://www.pierceye.com/news/358657/

相关文章:

  • 深圳品牌网站建设公司哪家好学建网站 必须学那些知识
  • 国内设计网站推荐山东省建设安全生产协会网站
  • 南京专业网站开发团队如何用手机建网站
  • 在婚恋网站上做红娘怎么样正规网络推广服务
  • 网络媒体设计是做什么的西安网站优化公司
  • 有项目去哪里找投资人河南网站优化排名
  • 灯塔建设网站网上做流量对网站有什么影响
  • 网站模板 黑色建设网站安全措施
  • 临沂企业网站建设珠海建设网站的公司哪家好
  • 中国网站建设公司排行榜网站建设精美模板
  • 国家对于学校网站建设深圳网站建设公司网络服务
  • 承德建站公司福田庆三整鼻子好吗
  • 域名和网站关联seo优化是指
  • 爱站网官网关键词周口网站关键词优化
  • vps网站管理器阿里云如何做网站
  • 网站是什么意思例如营销型网站文案怎么做
  • 五莲县网站建设wordpress去掉链接中的吗
  • 贡井区建设局网站建网是什么
  • 高端大气网站模板南京网站制作西安
  • wordpress站点标题和副标题网站内容要突出什么原因
  • 网站建设公司排行杭州wordpress站外链接跳转页面
  • 哪个网站可以做行程攻略哈尔滨市建设工程招标网
  • django网站开发实例望城建设局网站
  • 住房和城乡建设网站方案网页界面设计的网络系统有哪些
  • 自己做的网站怎么设置文件下载商城app搭建
  • 好看的网站分享查域名注册详细信息查询
  • 中山网站建设招聘宜宾seo快速排名
  • 网站制作 福宁网络有限公司单页网站seo优化
  • 增城做网站站长之家域名查询大全
  • 个人网站建设报价做游戏出租的网站好