Как настроить библиотеку элементов управления для сайта DNN
Я видел много постов (например, см. /questions/30390060/sborka-polzovatelskih-elementov-upravleniya-v-raznyih-proektah/30390078#30390078), в которых говорится, что пользовательские элементы управления 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 является приемлемой практикой.
Если вы начнете с шаблонов модулей, созданных Крисом Хаммондом (Christoc.com), вы практически не будете испытывать боли.