2012-02-24 4 views
1

에 URL에서 탭 ID를 얻을 수 있습니다, 그래서 쿼리 (예를 들어, http://localhost/Aanbod/Pagina/QueryKey/QueryValue/)와 친화적 인 URL을 만들 수 있습니다.어떻게이 URL (예를 들어, <a href="http://localhost/Aanbod/Pagina.aspx" rel="nofollow">http://localhost/Aanbod/Pagina.aspx</a>)을 가지고 있고이 <strong>탭 ID</strong>을 알고 싶어 DotNetNuke의

누구나 아이디어가 있습니까?

편집 :
나는 페이지 자체에 없습니다. 가능한 모든 페이지에서 그것을 알고 싶다.
URL에 탭 ID 자체가 포함되어 있지 않으므로 추출 할 수 없습니다.

+0

페이지에 있습니다. –

+0

아니, 그게 문제 야. 미안하다. 그렇지 않으면 어떤 문제도 없을 것입니다. – jerone

답변

7

입니다 당신이 잘

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

정답입니다. –

+1

이것은 답변이 아닙니다. 당신은 URL과 같지 않은 페이지 이름을 채워야합니다. 먼저 URL을 부모로 분할해야합니다 (예 : GetTabByName ("name", portalID, parentID)). 그러나 페이지 이름은 URL의 마지막 부분과 동일하지 않습니다. 예를 들어 DNN이'http : // localhost/parent/childpage.aspx' URL로 변환하는'Child Page'라는 페이지를 만들 수 있습니다. – jerone

-1

나는이 문제

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

죄송합니다, 내 나쁜 해결되기를 바랍니다! 여기

는 Pagina.aspx 집 또는 같은 DOTNET 핵의 페이지 인 경우 답

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

+0

이것은 정확히 반대입니다. 탭 ID를 모르지만 실제로 알고 싶습니다. – jerone

+0

다시 말하지만, 이것은 내가 원하는 것이 아닙니다. 두 번째 링크에서 사용자는 tabid가 포함 된 url을 가지며 정규 표현식을 사용하여 ID를 가져옵니다. 내 URL에 tabid가 들어 있지 않습니다 (예에서 볼 수 있음). – jerone

+0

Thnx가 응답하는 데 시간이 걸렸지 만, 이것은 내가 묻고있는 것이 아닙니다 ... – jerone

0

하여 탭 ID를 찾을 수 있습니다 시작하기 ,이 게시물은 조금 오래되었고 누군가가 여전히 해결책을 찾고 있는지 나는 모른다. 나는 최근에 여기에이 문제를 가지고 내가 쓴 코드의 조각을 해결하는 것입니다 : 당신은 몇 가지 추가 정보가있는 경우에 따라서는 유용 할 수

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! 마이클