Dotnetnuke модуль связи проблема - PullRequest
0 голосов
/ 23 августа 2011

У меня проблема со связью модуля dnn. У меня есть модуль, который реализует интерфейс связи модуля и слушателя и отправителя. в этом модуле у меня есть заполнитель, где я загружаю новый элемент управления ascx. проблема в том, когда я хочу общаться с этим новым динамически загруженным элементом управления. В этом элементе управления я также реализовал интерфейсы связи модуля (слушатель и отправитель). но когда я вызываю метод sender, в этом динамически загружаемом элементе управления для обновления другого модуля (на той же странице) ничего не происходит. Но затем я вызываю «отправителя» из элемента управления контейнера динамически загруженных элементов управления (элемента управления, где у меня есть заполнитель), он работает, обновляя другой модуль на той же странице. Это говорит о том, что связи модулей вообще не работают в динамически загружаемых элементах управления ascx. Есть ли кто-нибудь, у кого есть идеи, чтобы решить это / Theonealf

Ответы [ 3 ]

1 голос
/ 23 августа 2011

Я бы предположил, что это проблема времени. Попробуйте загрузить динамический элемент управления в событии Init и посмотрите, будет ли он перехватывать отправляемое сообщение.

0 голосов
/ 24 августа 2011

Честно говоря, я имел ограниченный успех с интерфейсом связи. Если вы можете получить работу для своих нужд, то отлично. Если вам нужно другое решение, вот что я сделал:

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

Я использовал Context.Items в сочетании с жизненным циклом ASP.NET для решения этой проблемы. Коллекция Items - это просто сумка, в которую можно вложить или вытащить что угодно. Модуль, который должен общаться, может складывать вещи в сумку с предметами во время Page_Load:

var item = "My Thing";
Context.Items.Add("MyThingKey", item);

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

var item = Context.Items["MyThingKey"].ToString();

Ключ делает это во время PreRender. Таким образом, вы уверены, что потребление сообщения происходит после производства сообщения.

Удачи!

0 голосов
/ 24 августа 2011

Согласен с @bdukes, также есть дополнительные вещи, которые я бы порекомендовал проверить:

  1. Проверьте, есть ли какое-либо исключение, пока ничего не происходит
  2. Ваш контроль наследуется от PortalModuleBase?Это потребуется, если вы хотите использовать moduleId, UserInfo, PortalId или любые другие специфические для dnn объекты.

Могут быть и другие проверки, но это зависит от вашего ответа при попытке выше и предложении @bdukes.

...