将请求参数添加到DotNetNuke页面

时间:2011-04-26 20:33:50

标签: dotnetnuke

我想知道是否有一种简单的方法可以在页面标题部分中指定请求参数(即CategoryID),或者以某种方式与请求(“CategoryID”)选取的特定页面相关联?或者另一种简单的方法,可以轻松地为DotNetNuke页面指定一个请求参数,该页面将由Request()获取。我们需要不同的页面来拥有不同的categoryid。

详细 我们每个页面都有一个模块。它始终调用Request(“CategoryID”)来查看是否为页面定义了类别,如果是,则按类别过滤它的结果列表。通常,在URL中指定CategoryID时使用此选项。但在这种情况下,我们想以其他方式指定它。我可以指定一个皮肤对象作为皮肤的一部分,它将查看URL并映射到相应的categoryID并将其写为会话变量,但我正在寻找一种更简单的方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

enter image description here

这允许您在Page的关键字中存储和检索CategoryID。这将在页面加载时调用。

        Dim TC As New TabController
        Dim TI As DotNetNuke.Entities.Tabs.TabInfo = TC.GetTab(TabId, PortalId, True)

        Dim tokens() As String = TI.KeyWords.Split(","c)
        For Each token As String In tokens
            Dim tokens2() As String = Trim(token).Split(":"c)
            If tokens2.Length = 2 AndAlso tokens2(0) = "CategoryID" Then
                Response.Write("My CategoryID is " & tokens2(1))
            End If
        Next

答案 1 :(得分:0)

我最终创建了一个处理此问题的SkinObject。目前,我已经对从TabID到CategoryID的映射进行了硬编码,然后我做了一个Response.Redirect到了带有附加到URL的CategoryID的页面。

我最初尝试将CategoryID写入Skin Objects Page.Init中的ViewState,但该模块没有获取。

我仍然认为有一种更好的方式(我担心这会对SEO产生影响)但是现在这种方法有效,直到我想出更好的方法或为模块添加功能。

NameSpace DotNetNuke.UI.Skins.Controls
Partial Class MapURLToCategoryID
    Inherits UI.Skins.SkinObjectBase

    Protected Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
        If Request("CategoryID") <> "" Then
            Exit Sub
        End If
        Dim id As Int16 = -1

        Select Case Request("tabid")
            Case 92
                id = 14
            Case 93
                id = 15
            Case 227
                id = 38
            Case 95
                id = 19
            Case 91
                id = 13
            Case 226
                id = 17
            Case 94
                id = 16
            Case Else
                'do nothing

        End Select
        If id <> -1 Then
            Response.Redirect(NavigateURL("", "CategoryID=" & id.ToString), False)
        End If

    End Sub
End Class
End Namespace