Получение URL для конкретной страницы в DotNetNuke 7

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

Я могу видеть URL-адрес страницы обратной связи через страницы администратора, и она кажется последовательной. Таким образом, очевидным способом было бы использовать модуль HTML и просто жестко закодировать URL. Но что-то не так в этом. Я подумал о создании простого модуля, инкапсуляции гиперссылки и окружающего текста в элементе управления и использовании NavigateURL для получения URL-адреса страницы обратной связи. К сожалению, я не смог понять, как это сделать. Я видел много информации о получении URL для других элементов управления в том же модуле и даже об использовании ModuleID, но ничего такого, что помогло бы мне реализовать код для получения URL для конкретной страницы на моем уровне опыта.

Извините за длинное вступление, но мне было интересно, будет ли хорошей практикой жестко задавать URL-адрес, а если нет, то каким образом программно получить URL-адрес для страницы обратной связи. ТИА

1 ответ

Решение

Первый аргумент NavigateURL является TabId (страницы называются вкладками в DNN API). Чтобы получить идентификатор вкладки / страницы Обратная связь, вам нужно вызвать метод из DotNetNuke.Entities.Tabs.TabController учебный класс; Я бы предложил статический метод TabController.GetTabByTabPath(portalId, tabPath, cultureCode)так вот как то так:

Globals.NavigateURL(TabController.GetTabByTabPath(this.PortalId, "//Feedback", string.Empty))

Вы все еще жестко программируете путь к странице здесь; у вас может быть параметр, который позволит вам выбрать страницу, но для простой ссылки это выглядит немного излишне. Основное преимущество, которое вы получите, жестко закодировав путь, но все же используя NavigateURL заключается в том, что любые изменения, внесенные вами в способ создания URL-адресов (например, обновление до расширенного поставщика URL-адресов, входящего в DNN 7.1), произойдут автоматически.

Большинство людей не очень беспокоятся о программной генерации ссылок в HTML-контенте.

Другие вопросы по тегам