Как получить идентификатор вкладки из URL в DotNetNuke - PullRequest
1 голос
/ 24 февраля 2012

У меня есть URL-адрес (например, http://localhost/Aanbod/Pagina.aspx), и я хочу знать идентификатор вкладки , чтобы я мог создать дружественный URL-адрес с запросом (например, http://localhost/Aanbod/Pagina/QueryKey/QueryValue/).

У кого-нибудь есть идея?

Edit:
Я не на самой странице. Хотите узнать это с любой возможной страницы.
URL не содержит самого идентификатора вкладки, поэтому его нельзя извлечь.

Ответы [ 3 ]

7 голосов
/ 23 октября 2012

если Pagina.aspx - это страница в dotnet nuke, такая как Home или Getting Started, тогда вы можете найти идентификатор вкладки по

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

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

int Tabid = objTabinfo.TabID;
0 голосов
/ 12 января 2017

Ну, этот пост немного устарел, и я не знаю, ищет ли кто-нибудь еще решение.У меня недавно была эта проблема, и вот части кода, которые я написал, чтобы решить ее:

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

Надеюсь, что это поможет кому-то ...

Счастливое DNNing!Michael

0 голосов
/ 29 февраля 2012

Я надеюсь, что это решит вашу проблему

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:)

...