ASP.NET — Как распространять события с помощью вложенных пользовательских элементов управления

#asp.net #events #delegates #delegation

#asp.net #Мероприятия #делегаты #делегирование

Вопрос:

У меня есть вложенные элементы управления на странице. Пример:

 Page 
  -ChildControl1 (of type AllOfMyItems)
      -ChildControl2 (of type ListOfItems)
         -ChildControl3 (of type MyItem <- this one fires event)
  

Когда дочерний элемент управления вызывает событие, я хочу, чтобы страница обрабатывала это событие. Какой хороший способ сделать это?

События и делегаты кажутся хорошей идеей для использования здесь.

Итак, я пытаюсь сделать следующее на Page_Init моей страницы:

  MyItem.SomethingHappened  = doStuff();
  

какой хороший способ сделать это?

Ответ №1:

Я предполагаю, что у вас нет прямого доступа к ChildControl2 со своей страницы, и в этом ваша проблема.

Один из вариантов — перенести событие из одного пользовательского элемента управления в его родительский пользовательский элемент управления и так далее, пока ваша страница не обработает родительский элемент управления.Что-то произошло событие. Этот способ рекомендуется, если пользовательские элементы управления не всегда вложены, как в этом примере.