У меня есть вложенное меню - здесь упрощенный класс:
public class NestedNode
{
public string Url { get; set; }
public List<NestedNode> Children { get; set; }
}
Учитывая, что у меня есть рекурсивный список NestedNode
, я пытаюсь выяснить, активен ли какой-либо потомок на каком-либо уровне.
Вот код для проверки:
protected void Page_Load(object sender, EventArgs e)
{
// The url of the current page
var currentUrl = Request.Url.GetLeftPart(UriPartial.Path);
// This is a list of nested nodes
var nodes = SiloNodes;
// Start loop
RecursiveCall(nodes, currentUrl);
}
void RecursiveCall(IEnumerable<NestedNode> nodes, string currentUrl)
{
if (nodes == null) return;
foreach (var n in nodes)
{
// This can test current level only
//var isActive = n.Url == currentUrl;
// This can test next level down
//var isActive = n.Children.Any(c => c.Url == currentUrl);
// How can I test all levels in one go?
RecursiveCall(n.Children, currentUrl);
}
}
Мне нужно уметь работать, если кто-то из родителей активен (на верхнем уровне), чтобы я могдобавить классы.На данный момент мои идеи углубляются только на один уровень.