c# - 如何从IPageStructure中找出父页面Id? (复合C1)

标签 c# asp.net .net c1-cms

这是从 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/

相关文章:

c# - 好还是坏的做法?在 getter 中初始化对象

c# - 如何中止来自 .NET 的 HTTP 请求?

.NET Thread.Sleep() 随机不精确

c# - 使用 Moq 在 C# 中单元测试 protected 方法

c# - asp.net v4 中循环内的异步任务

asp.net - WebSecurity.InitializeDatabaseConnection - 如何指定数据库架构?

asp.net - 如何在 ASP.NET MVC 5.1.2 OWIN 中以编程方式验证用户或进行身份验证

c# - DataGridViewComboBox 值无效?

c# - File.Delete 无法删除文件,因为该文件正在被另一个进程使用。不知道如何解决这个问题

asp.net - 如何使用 bat 文件中的 aspnet_compiler?