Источник. Автор Michael Washington: http://dotnetnuke.adefwebserver.com/DotNetNuke/tabid/195/Default.aspx
Как сделать ссылку в DotNetNuke® (или NavigateURL)
DotNetNuke - это есть набор пользовательских управляющих элементов (.ascx файлов). Вместе они и определяют модуль DNN. Если Вы просмотрите код основных модулей DNN, то увидите что они содержат элементы View, Edit, и Settings.
Ссылку на Settings контрол не делают. Она создается в меню модуля автоматически. Ниже указаны примеры перехода к View и Edit:
- Переход из View control в Edit control делается так: Response.Redirect(EditUrl())
- Переход из Edit control в View control делается так: Response.Redirect(Globals.NavigateURL(), true)
Переход к пользовательскому элементу управления
Если Вы желаете создать навигацию для пользовательского элемента иначе, чем было расказано выше, выполните несколько шагов.
1) Создайте свой элемент (смотрите Супер-простой модуль (DAL )). В этом примере создается элемент: EditMyGallery.ascx.
2) Добавьте новый контрол в модуль и дайте ему уникальный ключ.
Уникальный ключ в пример - mygallery. Модуль имеет название DefGallery. Запомните эту информацию, она будет использоваться далее.
На следующем этапе настройте права доступа к модулю. Выберите Просмотр для всех пользователей, таким образом контрол EditMyGallery.ascx будет доступен всем пользователям. Однако администратор портала имеет право по другому определить доступ к модулю пользователям. В данном случае все имеют право его просматривать, даже те, кто не зарегистрирован на портале.
Очень важно
В определении модуля, Вы должны установить Default Cache Time = 0 (и нажать ссылку Update Cache Properties). Иначе ваша ссылка может не работать, т.к. модуль кэшируется.
Использование NavigateURL
Сейчас Ваш модуль настроен, и Вы сможете использовать NavigateURL метод. Когда Вы просматариваете NavigateURL метод в проводнике объектов, то картинка такая.
Сама функция в DNN объявлена так:
Public Function NavigateURL
(
ByVal TabID As Integer,
ByVal ControlKey As String,
ByVal ParamArray AdditionalParameters() As String
)
As String
Сообщение: Вы должны добавить определение DotNetNuke.Common, используя Imports в VB.NET или using в C# . А теперь самое главное - посмотрите, как обрабатывается событие кнопки cmdEdit в DNN:
C#:
protected void cmdEdit_Click(object sender, EventArgs e)
{
ModuleController objModules = new ModuleController();
Response.Redirect(Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "mygallery", "mid=" ModuleId.ToString()));
}
VB.NET:
Protected Sub cmdEdit_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim objModules As ModuleController = New ModuleController
Response.Redirect(Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "mygallery", "mid=" & Cstr(ModuleID)))
End Sub
Далее рассмотрим, что получит браузер в результате выполнения инструкции NET. URL выглядит так:
http://localhost/MyDNNWebsite/Home/tabid/36/ctl/mygallery/mid/362/Default.aspx
Выражение: PortalSettings.ActiveTab.TabID, заменяется на tabid/36 в URL так, что среда DotNetNuke сделает переход на текущую страницу. Параметр "mygallery" вставляется после ctl. Эта инструкция сообщает среде DotNetNuke, что нужно загрузить контрол с ключем mygallery. Код: "mid=" ModuleId.ToString() вставляет ID модуля mid/362 в URL.
Источник. Автор Michael Washington: http://dotnetnuke.adefwebserver.com/DotNetNuke/tabid/195/Default.aspx