public static void BindTo <TNavigationItem, TDataItem>(this INavigationItemComponent <TNavigationItem> component, IEnumerable <TDataItem> dataSource, Action <TNavigationItem, TDataItem> action) where TNavigationItem : NavigationItem <TNavigationItem>, new() { foreach (TDataItem dataItem in dataSource) { var item = new TNavigationItem(); component.Items.Add(item); action(item, dataItem); } }
public static void BindTo <T>(this INavigationItemComponent <T> component, string sitemapName, Action <T, SiteMapNode> siteMapAction) where T : NavigationItem <T>, new() { var siteMap = component.ViewContext.ViewData.Eval(sitemapName) as SiteMapBase ?? (SiteMapManager.SiteMaps.ContainsKey(sitemapName) ? SiteMapManager.SiteMaps[sitemapName] : null); if (siteMap == null) { throw new NotSupportedException(Exceptions.SiteMapShouldBeDefinedInViewData.FormatWith(sitemapName)); } component.Items.Clear(); foreach (SiteMapNode node in siteMap.RootNode.ChildNodes) { LoadItemsFromSiteMapNode(node, component, siteMapAction); } }
public static void BindTo <T>(this INavigationItemComponent <T> component, string sitemapViewDataKey) where T : NavigationItem <T>, new() { BindTo(component, sitemapViewDataKey, null); }