从 2sxc 页面 link 字段获取子页面

Get child pages from 2sxc page link field

我在 2sxc dnn 模块中创建了 hyperlink 类型的字段。

现在,如果我在 razor 脚本中使用它,我会 URL 指向这个页面,这没问题。

eg:
@Content.LinkFieldName

但现在我需要创建某种导航来显示此 link 的所有子页面。嗯,我可以得到这个 links?

eg:
foreach(var page in Content.LinkFileldName.GetChildren???){
    <li>@page.Name</li>
}

这是一种方式: 首先,获取页面的DotNetNuke TabInfo(使用Content.LinkFieldName调用函数):

public static TabInfo GetTabByUrl(string url){
    foreach(var tab in TabController.GetPortalTabs(0, -1, false, true)){
        if (tab.FullUrl==url) return tab;
    }
    return null;
}

现在您有了第 url 页的 TabInfo 并使另一个函数获取 children:

public static List<TabInfo> GetChildren(TabInfo ti){
    var list = new List<TabInfo>();
    foreach(var tab in TabController.GetPortalTabs(0, -1, false, true)){
        if (ti.TabID==tab.ParentId) list.Add(tab);
    }
    return list;
}

现在全部召集起来列出children...

<ul>
@foreach(var page in GetChildren(GetTabByUrl(Content.LinkFieldName))){
    <li><a href="@page.FullUrl">@page.TabName</a></li>
}
</ul>

这是我使用的命名空间:

@using System
@using ToSic.SexyContent
@using DotNetNuke.Entities.Tabs