Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 如何从DotNetNuke中的url获取选项卡ID_C# 4.0_Dotnetnuke_Dotnetnuke Module_Dotnetnuke 6 - Fatal编程技术网

C# 4.0 如何从DotNetNuke中的url获取选项卡ID

C# 4.0 如何从DotNetNuke中的url获取选项卡ID,c#-4.0,dotnetnuke,dotnetnuke-module,dotnetnuke-6,C# 4.0,Dotnetnuke,Dotnetnuke Module,Dotnetnuke 6,我有一个url(例如),我想知道选项卡id,这样我可以通过查询(例如)创建一个友好的url 有人有主意吗 编辑: 我不在页面上。想从任何可能的页面了解它。 url本身不包含选项卡id,因此无法提取。我希望这能解决您的问题 对不起,我的错 这是你的答案 :)如果Pagina.aspx是dotnet nuke中类似Home或Getting Started的页面,那么您可以通过 DotNetNuke.Entities.Tabs.TabController objTab = new DotNetNuk

我有一个url(例如),我想知道选项卡id,这样我可以通过查询(例如)创建一个友好的url

有人有主意吗

编辑:
我不在页面上。想从任何可能的页面了解它。

url本身不包含选项卡id,因此无法提取。

我希望这能解决您的问题

对不起,我的错

这是你的答案


:)

如果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;

嗯,这篇文章有点过时了,我不知道是否还有人在寻找解决方案。我最近遇到了这个问题,下面是我为解决这个问题而编写的代码片段:

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;
}
public int-GetTabIDFromUrl(字符串url,int-portalID)
{
int-getTabIDFromUrl=0;
//使用TabID查询字符串尝试“旧”方法
如果(url.ToLower().IndexOf(“tabid”)>0)
{
Int32.TryParse(Regex.Match(url,“tabid[=/](\\d+”),RegexOptions.IgnoreCase)。Groups[1]。Value,out-getTabIDFromUrl);
}
//当没有结果时(由于高级或人性化或任何Url提供程序)
if(getTabIDFromUrl==0)
{
TabCollection tabs=TabController.Instance.GetTabsByPortal(portalID);
foreach(选项卡中的KeyValuePair k)
{
TabInfo tab=k.值;
if(tab.FullUrl.StartsWith(url))
{
getTabIDFromUrl=tab.TabID;
打破
}
}
}
返回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;
}
public int-GetTabIDFromUrl(字符串url、int-moduleID、int-portalID)
{
int-getTabIDFromUrl=0;
//使用TabID查询字符串尝试“旧”方法
如果(url.ToLower().IndexOf(“tabid”)>0)
{
Int32.TryParse(Regex.Match(url,“tabid[=/](\\d+”),RegexOptions.IgnoreCase)。Groups[1]。Value,out-getTabIDFromUrl);
}
//当没有结果时(由于高级或人性化或任何Url提供程序)
if(getTabIDFromUrl==0)
{
IList modules=ModuleController.Instance.GetTabModulesByModule(moduleID);
foreach(模块中的模块信息模块)
{
TabInfo tab=TabController.Instance.GetTab(module.TabID,portalID);
if(tab.FullUrl.StartsWith(url))
{
getTabIDFromUrl=tab.TabID;
打破
}
}
}
返回getTabIDFromUrl;
}
希望能帮助别人

祝你快乐!
迈克尔

不,这就是问题所在。很抱歉没有具体说明。否则就不会有任何问题:)这恰恰相反。我不知道标签id,我真的想知道。再说一遍,这不是我想要的。在第二个链接中,用户有一个包含tabid的url,并使用正则表达式获取id。我的url不包含tabid(如示例所示)。>。在第二个链接中,用户有一个包含tabid的url,并使用正则表达式获取id。<无论如何,这是一个糟糕的做法。您永远不应该依赖Url中的TabId,因为它可能会随着DotNetNuke的任何版本或其他Url方案的出现而改变。这也不是答案。您必须填写与url不同的页面名称。首先,我们需要将url拆分为父项(可以这样做->
gettabyname(“name”,portalID,parentID)
),但是页面名称与url中的最后一部分不同。例如,一个页面可以命名为
子页面
,DNN将其转换为url
http://localhost/parent/childpage.aspx