2014-02-06 2 views
2

UserControl 내의 Composite C1의 IPageStructure에서 페이지의 parentId를 가져 오는 가장 좋은 방법입니까?IPageStructure에서 부모 페이지 ID를 찾는 방법은 무엇입니까? (Composite C1)

string pPageId = SitemapNavigator.CurrentPageId.ToString(); 
Guid parentId = connection.Get<IPage>().Where(p => p.Id == new 
    Guid(pPageId)).First().GetParentId(); 

나는 GUID를 사용할 수없는 좁은 방으로보고 위의 경우()에 도움이 문자열로 본 페이지 id를 사용합니까.

답변

3

DataConnection에서 가져올 수있는 SitemapNavigator 인스턴스 클래스를 살펴보십시오. 데이터 바인딩 인스턴스를 얻으면 부모 페이지, 하위 페이지에 액세스 할 수있는 PageNode 클래스 형태의 현재 페이지에 대한 액세스를 제공합니다.

: 당신은 또한

// General (verbose) example - getting parent page ID 
using (var connection = new DataConnection()) 
{ 
    var currentPageNode = connection.SitemapNavigator.CurrentPageNode; 
    var parentPageNode = currentPageNode.ParentPage; 
    var parentPageId = parentPageNode.Id; 
} 

당신이 면도기의 기능에서이 일을하는 경우 이미 사용할 수있는 데이터 연결 (this.Data) 그래서 위의 같이 쓸 수 있습니다 제목, 설명 등을 액세스 할 수 있습니다

// Razor example - getting parent page ID  
var parentPageId = Data.SitemapNavigator.CurrentPageNode.ParentPage.Id; 
+0

감사합니다. mawtex, 매우 우아합니다. –

0

하나의 옵션은 SiteMapProvider 기능을 사용하여 표준 asp.net 방식으로 100 % 의존하는 것입니다.

var node = SiteMap.CurrentProvider.FindSiteMapNodeByKey("...")과 같은 특정 노드를 가져옵니다. 다음과 같은 부모 노드를 가져옵니다. var parentNode = node.ParentNode. ID를 다음과 같이 설정하십시오. var id = parentNode.Key

관련 문제