Sorting 菜单项定义顺序

Sorting 菜单项定义顺序,sorting,asp.net-core,navigation,aspnetboilerplate,Sorting,Asp.net Core,Navigation,Aspnetboilerplate,我开始使用ASP.NET样板文件,在这里我使用ASP.NET核心多页Web应用程序的免费启动模板 我的问题是关于左侧导航栏的。我在实现抽象类的项目中有NavigationProvider。我一直在测试MenuItemDefinition中的一些可用属性,特别是顺序和可见。我的期望是,我可以设置order和isVisible属性,这将在运行时显示在应用程序中。但是,我看不到这些属性中有任何一个实际用于设置菜单项的顺序或控制其可见性 对于order属性,我更新了SideBarNav组件的Defaul

我开始使用ASP.NET样板文件,在这里我使用ASP.NET核心多页Web应用程序的免费启动模板

我的问题是关于左侧导航栏的。我在实现抽象类的项目中有
NavigationProvider
。我一直在测试
MenuItemDefinition
中的一些可用属性,特别是
顺序
可见
。我的期望是,我可以设置
order
isVisible
属性,这将在运行时显示在应用程序中。但是,我看不到这些属性中有任何一个实际用于设置菜单项的顺序或控制其可见性

对于order属性,我更新了
SideBarNav
组件的Default.cshtml,以实现
OrderBy
,以便获得正确的订单。这是可行的,但我不确定这是否是推荐的方法

添加
MenuItemDefinition
时设置顺序实际上对正在运行的应用程序没有任何影响,并且此属性期望我像在Default.cshtml中那样实现行为,这是否正确

我之所以希望以这种方式控制顺序,而不仅仅是通过添加项目的顺序,是因为创建了不同的模块,每个模块都有自己的NavigationProvider

添加MenuItemDefinition时设置顺序实际上不会对正在运行的应用程序产生任何影响,并且此属性期望我像在Default.cshtml中那样实现该行为,这是否正确

是的,模板(从v5.2.0开始)既不使用也不实现用户菜单项的排序

我建议实现一种扩展方法,以便在整个项目中轻松更改顺序

public静态IOrderedEnumerable OrderByCustom(此IEnumerable menuItems)
{
返回菜单项
.OrderBy(menuItem=>menuItem.Order)
.ThenBy(menuItem=>menuItem.DisplayName);
}
关于版本:您使用的是v5.1.x及以下版本。从v5.2.0开始,该模板已迁移到MVC UI使用AdminLTE 3而不是AdminBSB,因此以下更改不兼容

v5.2+ 我已提交一份请购单,以实施订购:

var orderedMenuItems=Model.main菜单.Items.Where(x=>x.IsVisible.OrderByCustom().ToList();
var子菜单=Model.Items.Where(x=>x.IsVisible.OrderByCustom().ToList();
更改的文件:

  • Web.Mvc/Views/Shared/Components/SideBarMenu/Default.cshtml
  • Web.Mvc/Views/Shared/Components/SideBarMenu//u MenuItem.cshtml
v5.1.x及以下版本 请注意,您应该在Default.cshtml中的3个位置(对应于3个嵌套级别)进行更改

@foreach(Model.main menu.Items.OrderByCustom().ToList()中的var menuItem)
@foreach(menuItem.Items.OrderByCustom().ToList()中的var子菜单项)
@foreach(子菜单项.Items.OrderByCustom().ToList()中的var subSubMenuItem)
文件已更改:

  • Web.Mvc/Views/Shared/Components/SideBarNav/Default.cshtml
添加MenuItemDefinition时设置顺序实际上不会对正在运行的应用程序产生任何影响,并且此属性期望我像在Default.cshtml中那样实现该行为,这是否正确

是的,模板(从v5.2.0开始)既不使用也不实现用户菜单项的排序

我建议实现一种扩展方法,以便在整个项目中轻松更改顺序

public静态IOrderedEnumerable OrderByCustom(此IEnumerable menuItems)
{
返回菜单项
.OrderBy(menuItem=>menuItem.Order)
.ThenBy(menuItem=>menuItem.DisplayName);
}
关于版本:您使用的是v5.1.x及以下版本。从v5.2.0开始,该模板已迁移到MVC UI使用AdminLTE 3而不是AdminBSB,因此以下更改不兼容

v5.2+ 我已提交一份请购单,以实施订购:

var orderedMenuItems=Model.main菜单.Items.Where(x=>x.IsVisible.OrderByCustom().ToList();
var子菜单=Model.Items.Where(x=>x.IsVisible.OrderByCustom().ToList();
更改的文件:

  • Web.Mvc/Views/Shared/Components/SideBarMenu/Default.cshtml
  • Web.Mvc/Views/Shared/Components/SideBarMenu//u MenuItem.cshtml
v5.1.x及以下版本 请注意,您应该在Default.cshtml中的3个位置(对应于3个嵌套级别)进行更改

@foreach(Model.main menu.Items.OrderByCustom().ToList()中的var menuItem)
@foreach(menuItem.Items.OrderByCustom().ToList()中的var子菜单项)
@foreach(子菜单项.Items.OrderByCustom().ToList()中的var subSubMenuItem)
文件已更改:

  • Web.Mvc/Views/Shared/Components/SideBarNav/Default.cshtml

  • 那太好了。我担心的是我错过了一些东西或是用错了。您的回答回答了我的问题,谢谢。欢迎您!如果您还处于起步阶段,那么我建议从零开始使用v5.2+,这样您就可以利用后续的增强功能。这太棒了。我担心的是我错过了一些东西或是用错了。您的回答回答了我的问题,谢谢。欢迎您!如果您还处于起步阶段,那么我建议从零开始使用v5.2+,这样您就可以利用后续的增强功能。