问题描述
我正在查看为asp.net核心多页应用程序生成的样板代码,基本上是Layout调用Partial view SideBar.cshtml,它使SideBarMenuViewComponant呈现为以下代码流。
public class SideBarMenuViewComponent : ArchiroxViewComponent
{
private readonly IUserNavigationManager _userNavigationManager;
private readonly IAbpSession _abpSession;
public SideBarMenuViewComponent(
IUserNavigationManager userNavigationManager,IAbpSession abpSession)
{
_userNavigationManager = userNavigationManager;
_abpSession = abpSession;
}
public async Task<IViewComponentResult> InvokeAsync()
{
var model = new SideBarMenuviewmodel
{
MainMenu = await _userNavigationManager.GetMenuAsync("MainMenu",_abpSession.ToUserIdentifier())
};
return View(model);
}
}
主菜单在启动NavigationProvider类时定义
public class ArchiroxNavigationProvider : NavigationProvider
{
public override void SetNavigation(INavigationProviderContext context)
{
context.Manager.MainMenu
.AddItem(
new MenuItemDeFinition(
PageNames.Home,L("HomePage"),url: "",icon: "fas fa-home",requiresAuthentication: true
)
).AddItem(
new MenuItemDeFinition(
PageNames.Tenants,L("Tenants"),url: "Tenants",icon: "fas fa-building",permissionDependency: new SimplePermissionDependency(PermissionNames.Pages_Tenants)
)
).AddItem(
new MenuItemDeFinition(
PageNames.Users,L("Users"),url: "Users",icon: "fas fa-users",permissionDependency: new SimplePermissionDependency(PermissionNames.Pages_Users)
)
).AddItem(
new MenuItemDeFinition(
PageNames.Roles,L("Roles"),url: "Roles",icon: "fas fa-theater-masks",permissionDependency: new SimplePermissionDependency(PermissionNames.Pages_Roles)
)
)
.AddItem(
new MenuItemDeFinition(
PageNames.About,L("About"),url: "About",icon: "fas fa-info-circle"
)
).AddItem( // Menu items below is just for demonstration!
new MenuItemDeFinition(
"MultiLevelMenu",L("MultiLevelMenu"),icon: "fas fa-circle"
)
);
}
}
现在,如果我有一个以上的区域,则每个区域都有自己的侧边栏菜单,例如: 区域1: 控制器 楷模 观看次数 ==布局 == SideMenuForAreaOne
区域2: 控制器 楷模 观看次数 ==布局 == SideMenuForAreaTwo
我如何定义这些侧边栏菜单,并分别在每个相关区域的视图中显示它们,在ABP中,所有内容似乎都仅引用MainMenu。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)