2

我有一个网址(例如http://localhost/Aanbod/Pagina.aspx)并且我想知道标签 id,所以我可以使用查询创建一个友好的网址(例如http://localhost/Aanbod/Pagina/QueryKey/查询值/ )。

有人有想法吗?

编辑:
我不在页面本身。想从任何可能的页面了解它。
url 本身不包含选项卡 ID,因此无法提取。

4

3 回答 3

8

如果 Pagina.aspx 是 dotnet nuke 中的一个页面,例如 Home 或 Getting Started,那么您可以通过以下方式找到标签 ID

DotNetNuke.Entities.Tabs.TabController objTab = new DotNetNuke.Entities.Tabs.TabController(); 

DotNetNuke.Entities.Tabs.TabInfo objTabinfo = objTab.GetTabByName("Pagina", this.PortalId);

int Tabid = objTabinfo.TabID;
于 2012-10-23T13:38:57.880 回答
0

嗯,这个帖子有点老了,不知道还有没有人在找解决办法。我最近遇到了这个问题,这是我为解决它而编写的代码片段:

public int GetTabIDFromUrl(string url, int portalID)
{
    int getTabIDFromUrl = 0;

    // Try the "old" way with the TabID query string
    if (url.ToLower().IndexOf("tabid") > 0)
    {
        Int32.TryParse(Regex.Match(url, "tabid[=/](\\d+)", RegexOptions.IgnoreCase).Groups[1].Value, out getTabIDFromUrl);
    }

    // When there is no result (because of advanced or human friendly or whatever Url provider)
    if (getTabIDFromUrl == 0)
    {
        TabCollection tabs = TabController.Instance.GetTabsByPortal(portalID);

        foreach (KeyValuePair<int, TabInfo> k in tabs)
        {
            TabInfo tab = k.Value;
            if (tab.FullUrl.StartsWith(url))
            {
                getTabIDFromUrl = tab.TabID;
                break;
            }
        }
    }
    return getTabIDFromUrl;
}

这对于有很多页面的网站来说可能会很痛苦,因此如果您有一些额外的信息来缩小您必须循环通过的列表 - 例如放置在此选项卡上的模块的 ModuleId ,它可能会很有用:

public int GetTabIDFromUrl(string url, int moduleID, int portalID)
{
    int getTabIDFromUrl = 0;

    // Try the "old" way with the TabID query string
    if (url.ToLower().IndexOf("tabid") > 0)
    {
        Int32.TryParse(Regex.Match(url, "tabid[=/](\\d+)", RegexOptions.IgnoreCase).Groups[1].Value, out getTabIDFromUrl);
    }

    // When there is no result (because of advanced or human friendly or whatever Url provider)
    if (getTabIDFromUrl == 0)
    {
        IList<ModuleInfo> modules = ModuleController.Instance.GetTabModulesByModule(moduleID);

        foreach (ModuleInfo module in modules)
        {
            TabInfo tab = TabController.Instance.GetTab(module.TabID, portalID);
            if (tab.FullUrl.StartsWith(url))
            {
                getTabIDFromUrl = tab.TabID;
                break;
            }
        }
    }
    return getTabIDFromUrl;
}

希望对某人有所帮助...

快乐 DNN!迈克尔

于 2017-01-12T11:54:35.880 回答
-1

我希望这能解决你的问题

http://www.willstrohl.com/Blog/EntryId/66/HOW-TO-Get-DNN-TabInfo-page-object-from-TabId

对不起这是我的错!!

这是你的答案

http://www.dotnetnuke.com/Resources/Forums/forumid/118/threadid/89605/scope/posts.aspx :)

于 2012-02-29T11:02:42.153 回答