private TreeNode <MenuItem> ConvertSitemapNodeToMenuItemNode(Telerik.Web.Mvc.SiteMapNode node) { var item = new MenuItem(); var treeNode = new TreeNode <MenuItem>(item); if (node.RouteName.HasValue()) { item.RouteName = node.RouteName; } else if (node.ActionName.HasValue() && node.ControllerName.HasValue()) { item.ActionName = node.ActionName; item.ControllerName = node.ControllerName; } else if (node.Url.HasValue()) { item.Url = node.Url; } item.RouteValues = node.RouteValues; item.Visible = node.Visible; item.Text = node.Title; item.Attributes.Merge(node.Attributes); if (node.Attributes.ContainsKey("permissionNames")) { item.PermissionNames = node.Attributes["permissionNames"] as string; } if (node.Attributes.ContainsKey("id")) { item.Id = node.Attributes["id"] as string; } if (node.Attributes.ContainsKey("resKey")) { item.ResKey = node.Attributes["resKey"] as string; } if (node.Attributes.ContainsKey("iconClass")) { item.Icon = node.Attributes["iconClass"] as string; } if (node.Attributes.ContainsKey("imageUrl")) { item.ImageUrl = node.Attributes["imageUrl"] as string; } if (node.Attributes.ContainsKey("isGroupHeader")) { item.IsGroupHeader = Boolean.Parse(node.Attributes["isGroupHeader"] as string); } // iterate children recursively foreach (var childNode in node.ChildNodes) { var childTreeNode = ConvertSitemapNodeToMenuItemNode(childNode); treeNode.Append(childTreeNode); } return(treeNode); }
protected virtual TreeNode <MenuItem> ConvertSitemapNodeToMenuItemNode(Telerik.Web.Mvc.SiteMapNode node) { var item = new MenuItem(); var root = new TreeNode <MenuItem>(item); var id = node.Attributes.ContainsKey("id") ? node.Attributes["id"] as string : string.Empty; root.Id = id; if (node.RouteName.HasValue()) { item.RouteName = node.RouteName; } else if (node.ActionName.HasValue() && node.ControllerName.HasValue()) { item.ActionName = node.ActionName; item.ControllerName = node.ControllerName; } else if (node.Url.HasValue()) { item.Url = node.Url; } item.RouteValues = node.RouteValues; item.Id = id; item.Visible = node.Visible; item.Text = node.Title; item.Attributes.Merge(node.Attributes); if (node.Attributes.ContainsKey("permissionNames")) { item.PermissionNames = node.Attributes["permissionNames"] as string; } if (node.Attributes.ContainsKey("resKey")) { item.ResKey = node.Attributes["resKey"] as string; } if (node.Attributes.ContainsKey("iconClass")) { item.Icon = node.Attributes["iconClass"] as string; } if (node.Attributes.ContainsKey("imageUrl")) { item.ImageUrl = node.Attributes["imageUrl"] as string; } if (node.Attributes.ContainsKey("isGroupHeader")) { item.IsGroupHeader = Boolean.Parse(node.Attributes["isGroupHeader"] as string); } // Iterate children recursively. foreach (var childNode in node.ChildNodes) { var childTreeNode = ConvertSitemapNodeToMenuItemNode(childNode); root.Append(childTreeNode); } Services.EventPublisher.Publish(new MenuBuiltEvent(Name, root)); return(root); }