Как настроить библиотеку элементов управления для сайта DNN

Я видел много сообщений (например, см. https://stackoverflow.com/a/7363860/1378356), в которых заявляют, что пользовательские элементы управления ASP.NET (.ascx) не предназначены для использования в разных проектах / сборках. Вернее было бы создать серверный / настраиваемый элемент управления.

У меня вопрос, как тогда было предназначено для создания модуля DNN? Модули DNN обычно имеют файл .ascx, который наследуется от DotNetNuke.Entities.Modules.PortalModuleBase, который в конечном итоге наследуется от System.Web.UI.UserControl.

Это правильный способ создания модуля DNN, и если да, то я буду испытывать трудности в процессе?




Ответы (2)


Если вы следуете «букве закона», изложенной в связанной публикации, это правильно. Однако в случае модуля DNN элементы управления, которые вы создаете, ваши файлы .ascx, используются вашим кодом и просто загружаются с помощью DNN.

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

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

(Хорошим примером того, о чем они говорят относительно сложности обновления, может служить элемент управления DNN TextEditor. Учитывая корневую относительную ссылку на "~ / Controls / TextEditor.ascx", вы должны обмануть VS, чтобы узнать, для чего нужен правильный тип контроль.)

Но в целом, для решения на основе DNN да .ascx является приемлемой практикой.

person Mitchel Sellers    schedule 10.12.2015

Если вы начнете с шаблонов модулей, созданных Крисом Хаммондом (Christoc.com), у вас почти не будет боли.

person Joe Craig    schedule 10.12.2015
comment
Эти шаблоны могут помочь, но не могли бы вы уточнить: действительно ли DNN нарушает стандарт отсутствия ascx в другом проекте, и если да, то почему? - person as9876; 10.12.2015