这是从 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 上使用。
最佳答案
看看SitemapNavigator您可以从 DataConnection 获取实例类 - 当您获取数据绑定(bind)实例时,它可以让您以 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;
关于c# - 如何从IPageStructure中找出父页面Id? (复合C1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21611790/