public NavigationContext Create()
{
if (this.RequestContext.HttpContext.Items.Contains("brickpile:navigationContext"))
{
return this.RequestContext.HttpContext.Items["brickpile:navigationContext"] as NavigationContext;
}
using (IDocumentSession session = this.documentStore.OpenSession())
{
IPage[] pages = session.Load<IPage>(
this.routeResolverTrie.LoadTrie().GetAncestorIdsFor(
this.RequestContext.RouteData.GetCurrentPage<IPage>().Id,
true)).OrderBy(x => x.Metadata.SortOrder).ToArray();
var navigationContext = new NavigationContext
{
StartPage = pages.SingleOrDefault(x => x.Parent == null),
CurrentPage = this.RequestContext.RouteData.GetCurrentPage<IPage>(),
OpenPages = pages,
RequestContext = this.RequestContext
};
this.RequestContext.HttpContext.Items["brickpile:navigationContext"] = navigationContext;
return navigationContext;
}
}