使用INavigationProvider
填充管理菜单时,我们可以添加项目并使用LocalNav()
方法。这样我们在内容区域中就有了导航标签。
在我的情况下,我有自定义模块,其中列出了特定ContentType
的内容项。然后,我可以单击选定的内容项并在里面导航到子文档。
在这里,我需要显示包含子文档列表的3个选项卡。
问题是:如何动态创建此标签?
Orchard使用Layout.LocalNavigation
区域呈现此标签,其List
MenuItem
标有LocalNav = true
。
如何将自己的标签添加到此列表中?
(标签href
取决于父项ID
,例如/admin/MyModule/Index/123/questions
,其中123
是父文档的ID
谢谢!
答案 0 :(得分:1)
我无法提供有关从路线获取产品数据的具体建议,但就动态标签而言,我最近出现了类似的情况,这是我如何做到的;基本上,我需要为网站上的每个已安装的文化单独选项卡。
public void GetNavigation(NavigationBuilder builder)
{
var cultures = this.CultureManager.ListCultures().ToList();
builder
.Add(
T("Settings"),
menu => menu.Add(
T("Culture Customizations"),
"10.0",
subMenu =>
{
subMenu.LinkToFirstChild(true);
for (int cultureCounter = 0; cultureCounter < cultures.Count; cultureCounter++)
{
var cultureString = cultures[cultureCounter];
var cultureInfo = CultureInfo.GetCultureInfo(cultureString);
subMenu.Add(T(cultureInfo.EnglishName), cultureCounter.ToString(CultureInfo.InvariantCulture), item => item.Action("Index", "Admin", new {area = "ProjectName.YourModule", cultureCode = cultureString}).LocalNav(true));
}
}));
}