2

我在 DNN 7 中创建了一个页面,并向其中添加了 Codeplex 提供的标准反馈模块。现在我想使用另一个页面中间的超链接(不是来自菜单)链接到这个页面。

我可以通过管理页面看到反馈页面的 URL,它似乎是一致的。因此,显而易见的方法是使用 HTML 模块并简单地对 URL 进行硬编码。但是感觉有些不对劲。我想创建一个简单的模块,将超链接和周围的文本封装在一个控件中,并使用 NavigateURL 获取反馈页面的 URL。不幸的是,我无法弄清楚如何做到这一点。我已经看到了很多关于在同一模块中获取其他控件的 URL 甚至使用 ModuleID 的信息,但没有任何信息可以帮助我实现以我的经验水平获取特定页面的 URL 的代码。

对冗长的介绍感到抱歉,但我想知道硬编码 URL 是否是一种好习惯,如果不是,如何以编程方式获取反馈页面的 URL。TIA

4

1 回答 1

3

第一个参数NavigateURLTabId(页面在 DNN API 中称为选项卡)。要获取反馈选项卡/页面的 ID,您需要从DotNetNuke.Entities.Tabs.TabController类中调用一个方法;我建议使用静态方法TabController.GetTabByTabPath(portalId, tabPath, cultureCode),所以是这样的:

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

您仍在此处对页面路径进行硬编码;你可以有一个设置,让你选择页面,但这对于一个简单的链接来说似乎有点矫枉过正。通过对路径进行硬编码但仍在使用的主要好处NavigateURL是,您对生成 URL 的方式所做的任何更改(例如升级到 DNN 7.1 中的高级 URL 提供程序)都会自动发生。

大多数人不太担心以编程方式在 HTML 内容中生成链接。

于 2013-09-27T01:30:24.013 回答