2014-02-06 67 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(); 

我使用本PAGEID作爲字符串,這有助於在上述情況下看到,因爲。首先()不能被上的Guid使用。

回答

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功能,以100%的標準asp.net方式。

獲取像這樣的特定節點:var node = SiteMap.CurrentProvider.FindSiteMapNodeByKey("...")。獲取父節點:var parentNode = node.ParentNode。 得到它的id這樣:var id = parentNode.Key

相關問題