實現(xiàn)倉儲管理系統(tǒng)目錄 <https://www.cnblogs.com/chillsrc/p/11231284.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——ABP總體介紹(一)
<https://www.cnblogs.com/chillsrc/p/10913047.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——解決方案介紹(二)
<https://www.cnblogs.com/chillsrc/p/10944870.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——領域?qū)觿?chuàng)建實體(三)
<https://www.cnblogs.com/chillsrc/p/10980974.html>
?abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——定義倉儲并實現(xiàn) (四)
<https://www.cnblogs.com/chillsrc/p/11024357.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——創(chuàng)建應用服務(五)
<https://www.cnblogs.com/chillsrc/p/11065667.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——展現(xiàn)層實現(xiàn)增刪改查之控制器(六)
<https://www.cnblogs.com/chillsrc/p/11096690.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——展現(xiàn)層實現(xiàn)增刪改查之列表視圖(七)
<https://www.cnblogs.com/chillsrc/p/11124614.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——展現(xiàn)層實現(xiàn)增刪改查之增刪改視圖(八)
<https://www.cnblogs.com/chillsrc/p/11159642.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——展現(xiàn)層實現(xiàn)增刪改查之菜單與測試(九)
<https://www.cnblogs.com/chillsrc/p/11195189.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——多語言(十)
<https://www.cnblogs.com/chillsrc/p/11231265.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——使用 WEBAPI實現(xiàn)CURD (十一)
<https://www.cnblogs.com/chillsrc/p/11269737.html>
abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——菜單-上 (十六)
<https://www.cnblogs.com/chillsrc/p/11448287.html>
?
三、動態(tài)加載菜單
?????? 通過 abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——菜單-上 (十六)
<https://www.cnblogs.com/chillsrc/p/11448287.html>
這篇文章,我們已經(jīng)了解了ABP中的菜單相關(guān)的類及類的屬性與方法,接下我們通過實例來實現(xiàn)一個動態(tài)加載菜單的功能。動態(tài)菜單是我們在abp(net
core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——領域?qū)觿?chuàng)建實體(三)
<https://www.cnblogs.com/chillsrc/p/10980974.html>至abp(net
core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——展現(xiàn)層實現(xiàn)增刪改查之增刪改視圖(八)
<https://www.cnblogs.com/chillsrc/p/11159642.html>中添加的功能模塊。
???? 1. 在Visual Studio
2017的“解決方案資源管理器”中,右鍵單擊“ABP.TPLMS.Mvc.Web”項目的“Startup”文件夾,在彈出菜單中選擇“添加” > > “類”。
將類命名為 DaynaicAddMenu,然后選擇“添加”。如下圖。
?
?
????? 2. 在Visual Studio 2017的編輯器中打開我們剛才創(chuàng)建的DaynaicAddMenu.cs文件,寫入如下代碼。
?
using Abp.Application.Navigation; using Abp.Localization; using
ABP.TPLMS.Entitys;using System; using System.Collections.Generic; using
System.Linq;using System.Threading.Tasks; namespace ABP.TPLMS.Web.Startup {
public class DynamicAddMenu { Modules.IModuleAppService _moduleAppService;
public DynamicAddMenu(Modules.IModuleAppService moduleApp) { _moduleAppService =
moduleApp; }public MenuItemDefinition AddMenus() { #region 動態(tài)菜單 var modules=
_moduleAppService.GetAll();var project = new MenuItemDefinition( "Business", L("
Business"), icon: "menu", order: 5 ); var list = modules.ToList();
FillMenu(project,0, list); return project; #endregion } // 遞歸算法 private void
FillMenu(MenuItemDefinition menu,int ParentId, List<Module> modules) { List
<Module> drs = modules.Where(x=>x.ParentId==ParentId).ToList(); if (drs == null
|| drs.Count <=0) { return; } else { for (int i = 0; i < drs.Count; i++) {
Module dr= drs[i]; MenuItemDefinition nodeName = new MenuItemDefinition(
dr.Name, L(dr.DisplayName), url: dr.Url, icon:"business",
requiredPermissionName: dr.RequiredPermissionName, customData: i );
menu.AddItem(nodeName); FillMenu(nodeName, dr.Id, modules); } } }private static
ILocalizableString L(string name) { return new LocalizableString(name,
TPLMSConsts.LocalizationSourceName); } } }
?
????? 3. 在Visual Studio
2017的編輯器中打開“ABP.TPLMS.Mvc.Web”項目的“Startup”文件夾中的TPLMSNavigationProvider.cs文件,寫入加載菜單的代碼。下面代碼中的粗體部分。
using Abp.Application.Navigation; using Abp.Localization; using
ABP.TPLMS.Authorization;namespace ABP.TPLMS.Web.Startup { /// <summary> ///
This class defines menus for the application./// </summary> public class
TPLMSNavigationProvider : NavigationProvider { Modules.IModuleAppService
_moduleAppService;public TPLMSNavigationProvider(Modules.IModuleAppService
moduleApp) { _moduleAppService= moduleApp; } public override void
SetNavigation(INavigationProviderContext context) {var subMenu = new
DynamicAddMenu(_moduleAppService).AddMenus(); context.Manager.MainMenu .AddItem(
new MenuItemDefinition( PageNames.Home, L("HomePage"), url: "", icon: "home",
requiresAuthentication:true ) ).AddItem( new MenuItemDefinition(
PageNames.Tenants, L("Tenants"), url: "Tenants", icon: "business",
requiredPermissionName: PermissionNames.Pages_Tenants ) ).AddItem(new
MenuItemDefinition( PageNames.Users, L("Users"), url: "Users", icon: "people",
requiredPermissionName: PermissionNames.Pages_Users ) ).AddItem(new
MenuItemDefinition( PageNames.Roles, L("Roles"), url: "Roles", icon: "
local_offer", requiredPermissionName: PermissionNames.Pages_Roles ) ) .AddItem(
new MenuItemDefinition( PageNames.Module, L("Module"), url: "Module", icon: "
local_offer" ) ) .AddItem( new MenuItemDefinition( PageNames.Supplier, L("
Supplier"), url: "Supplier", icon: "people" ) ) .AddItem(subMenu ) .AddItem(
new MenuItemDefinition( PageNames.About, L("About"), url: "About", icon: "info"
) ).AddItem(// Menu items below is just for demonstration! new
MenuItemDefinition("MultiLevelMenu", L("MultiLevelMenu"), icon: "menu"
).AddItem(new MenuItemDefinition( "AspNetBoilerplate", new
FixedLocalizableString("ASP.NET Boilerplate") ).AddItem( new MenuItemDefinition(
"AspNetBoilerplateHome", new FixedLocalizableString("Home"), url: "
https://aspnetboilerplate.com?ref=abptmpl" ) ).AddItem( new MenuItemDefinition(
"AspNetBoilerplateTemplates", new FixedLocalizableString("Templates"), url: "
https://aspnetboilerplate.com/Templates?ref=abptmpl" ) ).AddItem( new
MenuItemDefinition("AspNetBoilerplateSamples", new FixedLocalizableString("
Samples"), url: "https://aspnetboilerplate.com/Samples?ref=abptmpl" ) ).AddItem(
new MenuItemDefinition( "AspNetBoilerplateDocuments", new
FixedLocalizableString("Documents"), url: "
https://aspnetboilerplate.com/Pages/Documents?ref=abptmpl" ) ) ).AddItem( new
MenuItemDefinition("AspNetZero", new FixedLocalizableString("ASP.NET Zero")
).AddItem(new MenuItemDefinition( "AspNetZeroHome", new FixedLocalizableString("
Home"), url: "https://aspnetzero.com?ref=abptmpl" ) ).AddItem( new
MenuItemDefinition("AspNetZeroDescription", new FixedLocalizableString("
Description"), url: "https://aspnetzero.com/?ref=abptmpl#description" )
).AddItem(new MenuItemDefinition( "AspNetZeroFeatures", new
FixedLocalizableString("Features"), url: "
https://aspnetzero.com/?ref=abptmpl#features" ) ).AddItem( new
MenuItemDefinition("AspNetZeroPricing", new FixedLocalizableString("Pricing"),
url:"https://aspnetzero.com/?ref=abptmpl#pricing" ) ).AddItem( new
MenuItemDefinition("AspNetZeroFaq", new FixedLocalizableString("Faq"), url: "
https://aspnetzero.com/Faq?ref=abptmpl" ) ).AddItem( new MenuItemDefinition( "
AspNetZeroDocuments", new FixedLocalizableString("Documents"), url: "
https://aspnetzero.com/Documents?ref=abptmpl" ) ) ) ); } private static
ILocalizableString L(string name) { return new LocalizableString(name,
TPLMSConsts.LocalizationSourceName); } } }
?
??? 4. 在Visual Studio
2017的“解決方案資源管理器”中,找到“ABP.TPLMS.Application”項目中的“Modules”目錄,在編輯器中打開
IModuleAppService.cs 接口文件。添加獲取全部模塊的代碼。代碼如下。
List<Module> GetAll();
??? 5. 在Visual Studio
2017的“解決方案資源管理器”中,找到“ABP.TPLMS.Application”項目中的“Modules”目錄,在編輯器中打開
ModuleAppService.cs 文件。添加獲取全部模塊的代碼。代碼如下。??
public List<Module> GetAll() { var books = _moduleRepository.GetAllList();
return books; }
???? 6. 前端代碼不用作任何修改。在Visual Studio 2017中按F5運行應用程序。登錄之后,效果如下圖。
?
熱門工具 換一換