Изменения, каскадные до потомков в древовидной структуре ASP.NET MVC 3 - PullRequest
0 голосов
/ 02 сентября 2011

Это для приложения ASP.NET MVC 3 и имеет дело с обновлением дочерних узлов в древовидной структуре.Пользователь может вносить изменения в любую часть узла в дереве.После того как пользователь внес изменение (то есть в поле «Состояние»), это изменение должно быть каскадно передано всем дочерним элементам.Проблема в том, что существует произвольное количество детей, и их дети имеют произвольное число детей и так далее.Как бы я поступил так?

Спасибо всем, кто может помочь!

EDIT

Я бы хотел, чтобы эта структура повторялась до тех пор, пока не осталось больше детей

if (item.child.Count > 0) //Level 1
{
   foreach (var item1 in item.child)
   {
      //Logic to update each entity 

      if (item1.child.Count > 0) //Level 2
      {
         foreach (var item2 in item1.child)
         {
            //Logic to update each entity 

            if (item2.child.Count > 0) //Level 3
            {
               foreach(var item3 in item2.child) 
                           .
                           .
                           .

Есть ли элегантный способ сделать это, или это просто какая-то форма жесткого кодирования этого числа или уровней «наилучшего предположения»?

Ответы [ 2 ]

2 голосов
/ 20 января 2012

большое спасибо, кузнец ...

я использую коллекцию элементов для итерации, поэтому приведенный ниже код работает для меня .......

    void ProcessChildren(ICollection<Item> items)
    {

        foreach (var child in items)
        {
            if(child.Count != 0)
                ProcessChildren(child.ChildCategories);
        }

    }

    ProcessChildren (rootItems);
1 голос
/ 10 сентября 2011

Вам нужно написать рекурсивный метод:

void ProcessChildren (Item item)
{
    // Logic to update 'this' child item

    foreach (var child in item.child)
    {
       ProcessChildren (child);
    }
}

ProcessChildren (rootItem);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...