这是从UserControl中的Composite C1中的IPageStructure获取页面的parentId的最佳方法吗?
string pPageId = SitemapNavigator.CurrentPageId.ToString();
Guid parentId = connection.Get<IPage>().Where(p => p.Id == new
Guid(pPageId)).First().GetParentId();
我确实使用当前的pageId作为字符串,这有助于在上面的情况下看到.First()不能在Guid上使用。
答案 0 :(得分: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;
}
如果您是从Razor函数执行此操作,则已有可用的数据连接(this.Data),因此上述内容可以这样写:
// Razor example - getting parent page ID
var parentPageId = Data.SitemapNavigator.CurrentPageNode.ParentPage.Id;
答案 1 :(得分:0)
一种选择就是使用SiteMapProvider功能100%依赖标准的asp.net方式。
获取如下特定节点:var node = SiteMap.CurrentProvider.FindSiteMapNodeByKey("...")
。
获取父节点,如下所示:var parentNode = node.ParentNode
。
得到这样的ID:var id = parentNode.Key