there is no built-in breadcrumbs navigation in MonoX but you can easily use similar code to one used by the MonoX Simple menu to get the desired functionality. To do so you need to used the following code to fetch the menu structure and then filter out everything by the page is on which you are at the moment.
HierarchyDataCollection<HierarchyData<NavigationMenuItem>> menuDataSource =
new
HierarchyDataCollection<HierarchyData<NavigationMenuItem>>();
Context tree_context =
new
Context();
EntityCollection collection = NavigationRepository.GetInstance().GetMenuNavigationItems(tree_context,
false
);
if
(collection.Count > 0)
{
int
rootCnt = 0;
foreach
(NavigationEntity rootP
in
collection)
{
if
(!rootP.ParentId.HasValue)
{
NavigationEntity rootPage = (NavigationEntity)tree_context.Get(
new
NavigationEntityFactory(), rootP.Id);
HierarchyData<NavigationMenuItem> nodeHierarchy = GetMenuItems(rootPage,
null
);
if
(nodeHierarchy !=
null
)
{
if
(!
string
.IsNullOrEmpty(RootMenuSeparatorString) && rootCnt > 0)
{
NavigationMenuItem separator =
new
NavigationMenuItem(RootMenuSeparatorString,
string
.Empty,
string
.Empty,
string
.Empty,
string
.Empty, 0);
HierarchyData<NavigationMenuItem> separatorHierarchy =
new
HierarchyData<NavigationMenuItem>(separator,
null
);
menuDataSource.Add(separatorHierarchy);
}
menuDataSource.Add(nodeHierarchy);
rootCnt++;
}
}
}
}
//Parent page filter
if
(ParentFilterItemId != Guid.Empty)
{
HierarchyDataCollection<HierarchyData<NavigationMenuItem>> newDataSource =
new
HierarchyDataCollection<HierarchyData<NavigationMenuItem>>();
foreach
(HierarchyData<NavigationMenuItem> hItem
in
menuDataSource)
{
HierarchyData<NavigationMenuItem> parentNode = FindFilterMenuItem(hItem);
if
(parentNode !=
null
)
{
HierarchyData<NavigationMenuItem> newRoot = CloneMenuItemTree(parentNode,
null
);
newDataSource.Add(newRoot);
menuDataSource.Clear();
menuDataSource = newDataSource;
break
;
}
}
}
private
HierarchyData<NavigationMenuItem> GetMenuItems(NavigationEntity nav, HierarchyData<NavigationMenuItem> parent)
{
//navigation entities can have roles attached to them, apart from the roles attached to the pages
//btw this is the only way to assign roles to navigation containers and external pages
//navigation role settings override those set on the pages
if
(!SecurityUtility.IsAdmin())
{
if
(nav.NavigationRoles.Count > 0 && !SecurityUtility.IsUserInRoles(nav.NavigationRoleIds))
return
null
;
}
NavigationMenuItem nodeItem =
new
NavigationMenuItem();
nodeItem.Title = LocalizationTextHandler.GetText(nav.NavigationLocalizations, NavigationLocalizationFields.Title, PageLocalizationFields.LanguageId);
nodeItem.ToolTip = nodeItem.Title.Replace(
"'"
, String.Empty);
if
(
this
.UseSpanElementsInMenuItems)
nodeItem.Title =
string
.Format(
"<span>{0}</span>"
, nodeItem.Title);
string
url =
string
.Empty;
if
(String.IsNullOrEmpty(nodeItem.ToolTip))
return
null
;
if
(!
string
.IsNullOrEmpty(nav.ExternalUrl))
{
url = LocalizationUtility.RewriteLink(nav.ExternalUrl);
}
else
if
(nav.IsContainerPage)
{ }
else
{
url = LocalizationUtility.RewriteLink(nav.Page.Url);
}
url = UrlFormatter.ResolveUrl(url);
nodeItem.Url = url;
nodeItem.Value = nav.Id.ToString();
HierarchyData<NavigationMenuItem> root =
new
HierarchyData<NavigationMenuItem>(nodeItem, parent);
if
(nav.ChildNavigationItems.Count > 0 && !ShowRootItemsOnly)
{
foreach
(NavigationEntity subPage
in
nav.ChildNavigationItems)
{
HierarchyData<NavigationMenuItem> subNodeItem = GetMenuItems(subPage, root);
}
}
return
root;
}
The above code should guide you on how to fetch the menu structure that should be used in the breadcrumb navigation. To get the current page id your page should inherit from the MonoX BasePage and then you will be able to get the page id with base.PageProperties.Id property.
Note: UI breadcrumb representation is totally up to you, you can use simple repeater to accomplish this. This is only sample code not a working solution.
Let us know if you need anything.