1

我想构建一个显示主页导航的 ASP.NET 用户控件,该导航仅包括特定页面类型的页面(我将其命名为 ContentPage)。

在已发布页面的数据库表中,每个页面(列PageTypeID)都存在此信息,但我无法从我的代码中找到通过复合 API 访问它的任何方法。

using(var conn = new DataConnection())
{
    var siteMapNav = new SitemapNavigator(conn);
    var pages = siteMapNav.CurrentHomePageNode.GetPageNodes(SitemapScope.DescendantsAndCurrent);
    // what now?
}

如何从 C# 访问页面的 PageType 信息?

4

2 回答 2

2

您可以使用数据连接在 IPage.PageTypeId 上查找页面类型,然后结合来自 SitemapNavigator 的结果:

using (var conn = new DataConnection())
{
    Guid pageTypeIdInQuestion = Guid.Empty; // put type id here

    var siteMapNav = new SitemapNavigator(conn);
    var pagesOfDesiredType = conn.Get<IPage>().Where(f => f.PageTypeId == pageTypeIdInQuestion).Select(f => f.Id);
    var pages = siteMapNav.CurrentHomePageNode.GetPageNodes(SitemapScope.DescendantsAndCurrent).Where(f=> pagesOfDesiredType.Contains(f.Id));
}

考虑缓存您在此处获得的结果,并使用IPage 和 IPageStructure 上的添加/更新/删除事件刷新它。

于 2012-08-27T13:42:29.760 回答
0
string pageType = null;
using (var conn = new DataConnection())
{
    var currentPageId = HomePageNode.Id;
    var pageTypeId = conn.Get<IPage>().Where( p => p.Id == currentPageId ).Select( p => p.PageTypeId ).Single();
    pageType = conn.Get<IPageType>().Where(pt => pt.Id == pageTypeId ).Select(pt => pt.Name).Single();
}
于 2016-06-04T13:02:50.433 回答