private IEnumerable<MvcSiteMapNode> CopyAndSetState(IEnumerable<MvcSiteMapNode> nodes, String area, String controller, String action)
{
List<MvcSiteMapNode> copies = new List<MvcSiteMapNode>();
foreach (MvcSiteMapNode node in nodes)
{
MvcSiteMapNode copy = new MvcSiteMapNode();
copy.IconClass = node.IconClass;
copy.IsMenu = node.IsMenu;
copy.Controller = node.Controller;
copy.Action = node.Action;
copy.Area = node.Area;
copy.Children = CopyAndSetState(node.Children, area, controller, action);
copy.HasActiveChildren = copy.Children.Any(child => child.IsActive || child.HasActiveChildren);
copy.IsActive =
copy.Children.Any(childNode => childNode.IsActive && !childNode.IsMenu) ||
(
String.Equals(node.Area, area, StringComparison.OrdinalIgnoreCase) &&
String.Equals(node.Action, action, StringComparison.OrdinalIgnoreCase) &&
String.Equals(node.Controller, controller, StringComparison.OrdinalIgnoreCase
));
copies.Add(copy);
}
return copies;
}
private IEnumerable<MvcSiteMapNode> GetAuthorizedSiteMap(Int32? accountId, IEnumerable<MvcSiteMapNode> nodes)