Juursõlme peitmine sitemap’i XML-is ASP.NET 2.0 puhul
01.04.2007 | GunnarCRM-lahendust ehitades tekkis pisikene mure. Nimelt kasutame ASP.NET 2.0 menüü ja asukoha komponente. Menüüde struktuuri defineerib ära sitemap-fail. Sitemap on ülesehituselt hierarhiline XML, kus kõige välimine sõlm sisaldab kõiki teisi. Menüüst saime selle sõlme välja, kuid asukoha komponent püüdis seda siiski visalt näidata.
Lahenduse leidsin Jeff Prosise blogi kandest Hiding the Root Node from SiteMapPath. Seda täiendades sain kokku sellise asukoha näitamise mehanismi, mis vajadusel juursõlme ära peidab.
Tulemuseks järgnev kood Global klassis.
{
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(HideRootNode);
}
static SiteMapNode HideRootNode(Object sender, SiteMapResolveEventArgs e)
{
// Hide the root node from SiteMapPath controls by cloning the site
// map from the current node up to the node below the root node and
// setting that node's ParentNode property to null.
if (SiteMap.CurrentNode == null) return null;
SiteMapNode node = SiteMap.CurrentNode.Clone();
SiteMapNode current = node;
SiteMapNode root = SiteMap.RootNode;
if (current.Title != "Algus") return current;
// Just in case the current node *is* the root node!
if (current != root)
{
while (node.ParentNode != root)
{
if (node.ParentNode == null)
break;
node.ParentNode = node.ParentNode.Clone();
node = node.ParentNode;
}
node.ParentNode = null;
}
return current;
}
