如何使用TabID?

时间:2012-07-03 08:31:11

标签: vb.net dotnetnuke response.redirect navigateurl

我想使用标签ID而不是静态网址来访问链接,因为我的URl是

Response.Redirect("~/Activities/Calendar.aspx?date=" + DateTime.Now.ToString("MM/dd/yyyy"))

我使用以下代码

Dim objModuleController As DotNetNuke.Entities.Modules.ModuleController
Dim objModuleInfo As DotNetNuke.Entities.Modules.ModuleInfo = objModuleController.GetModule(CInt(CType(Settings("DetailsCalendar"), Integer)))
Dim TabID As Integer = objModuleInfo.TabID

If CBool(CType(Settings("DetailsCalendar"), String)) Then
    Response.Redirect(NavigateURL(TabID, "date", DateTime.Now.ToString("MM/dd/yyyy")))
End If

但它会将我重定向到错误的网址 我做错了什么或怎么写,我知道如何使用带有URL的TabID

2 个答案:

答案 0 :(得分:1)

如果你的控件继承了“PortalModuleBase”,它就已经有了TabId。

但导航网址问题的根本原因是它所具有的结构与您正在尝试的重载类似于以下内容

NavigateUrl(int TabId, string contolKey, string[] params)

您需要传递值,因此您只需附加参数

从你的例子中你应该没问题

NavigateUrl(TabId, string.Empty, "date", DateTime.Now.ToString("MM/dd/yyyy"))

这里的关键是你没有传递控制键。

答案 1 :(得分:0)

这是使其有效的正确代码:)

Dim objModuleController As New DotNetNuke.Entities.Modules.ModuleController
Dim objModuleInfo As DotNetNuke.Entities.Modules.ModuleInfo = objModuleController.GetModule(CInt(CType(Settings("DetailsCalendar"), Integer)))

If CBool(CType(Settings("DetailsCalendar"), String)) Then
IF (objModuleInfo.TabID <> 0 ) Then
Response.Redirect(NavigateURL(objModuleInfo.TabID, String.Empty ,"date="+ DateTime.Now.ToString("MM/dd/yyyy")))
End If
End If