0

我在 2sxc dnn 模块中创建超链接类型的字段。

现在,如果我在 razor 脚本中使用它,我会得到指向此页面的 URL,这没关系。

eg:
@Content.LinkFieldName

但现在我需要创建某种导航来显示此链接的所有子页面。呵呵,这个链接可以吗?

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

1 回答 1

1

这是一种方法:首先,获取页面的 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 并让另一个函数获取子项:

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;
}

现在所有人都召集在一起列出孩子...

<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
于 2016-05-24T07:18:17.377 回答