Ошибка добавления модуля DNN, когда контроллеру назначен ключ

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

Если я просто добавлю новый элемент управления в определение модуля, он отобразит только этот элемент управления, а не оба сразу. Если я удалю его, исходный элемент управления будет отображаться нормально. Вернувшись к определениям модулей, я перешел к элементам управления модуля и присвоил значения соответствующим свойствам Key. Когда я сохраняю, мой модуль исчезает со страницы, на которой он отображался. Если я попытаюсь добавить его снова, я получаю «Ссылка на объект не установлена ​​на экземпляр объекта».

Путем проб и ошибок я обнаружил, что если я удалю ключ, я могу повторно добавить модуль, который снова работает (по крайней мере, как описано выше).

По сути, мне нужно несколько представлений для моего модуля, где отдельные представления могут отображаться на разных страницах (во многом как модуль Блог). Я не создаю пакет для распространения, поэтому почти готов просто создать отдельный модуль, но где в этом опыт обучения?

Я безуспешно искал учебник по созданию модуля с несколькими представлениями. Может ли кто-нибудь дать некоторое представление?


person Michael Itzoe    schedule 08.12.2010    source источник


Ответы (3)


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

Другой вариант - иметь одно представление ascx, которое является заполнителем, и вставлять любое представление ascx, которое вы хотите, на основе настройки модуля.

Я использовал оба этих метода раньше, и оба работают хорошо.

person Matt    schedule 09.12.2010

В DotNetNuke может быть только одно «представление», поэтому, если вы хотите создать что-то, отображающее разные представления в зависимости от ситуации, вам необходимо создать представление диспетчеризации. Таким образом, в зависимости от настроек вашего модуля, таких как у вас, или параметра URL, cookie, сеанса, что-то в основном представлении получает другой пользовательский элемент управления для отображения того, что необходимо.

В этом посте об этом немного говорится Dispatch View

Похоже, вы нашли решение, которое работает для вас.

person Ryan Doom    schedule 13.12.2010

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

Если такое поведение подойдет вам, то вы можете добавить несколько элементов управления: ПЕРВЫЙ элемент управления, который вы добавляете без ключа, вторичные элементы управления, добавляемые с помощью определенного ключа. Затем вы можете использовать NavigateUrl или EditUrl для создания ссылки на определенные элементы управления.

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

person Mitchel Sellers    schedule 13.12.2010