protected override void Invoke(object parameter) { if (SiteMapNode != null) { SiteMapNode.Execute(); } else if (!string.IsNullOrEmpty(SiteMapNodeKey)) { if (!SiteMapService.IsSiteMapLoaded) { SiteMapService.LoadSiteMap((s) => { this.Invoke(null); }); return; } var _siteMapNode = SiteMapService.ResolveSiteMapNode(SiteMapNodeKey); if (_siteMapNode == null) { throw new InvalidOperationException(string.Format(SITEMAPNODE_NOTFOUND, SiteMapNodeKey)); } _siteMapNode.Execute(); } }