我想构建一个ASP.NET用户控件,它显示主页导航,包括仅某个页面类型的页面(我将其命名为ContentPage)。
在已发布页面的数据库表中,每个页面都显示此信息(列PageTypeID
),但我无法通过我的代码中的Composite API找到任何方法来访问它。
using(var conn = new DataConnection())
{
var siteMapNav = new SitemapNavigator(conn);
var pages = siteMapNav.CurrentHomePageNode.GetPageNodes(SitemapScope.DescendantsAndCurrent);
// what now?
}
如何从C#访问页面的PageType信息?
答案 0 :(得分: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上使用add/update/delete events进行刷新。
答案 1 :(得分: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();
}