Добавление параметров запроса на страницу DotNetNuke - PullRequest
1 голос
/ 27 апреля 2011

Мне интересно, есть ли простой способ указать параметр запроса (например, CategoryID) в разделе заголовка страницы или каким-либо образом связать его с конкретной страницей, которая будет выбрана по запросу ("CategoryID")?Или другой простой подход, позволяющий легко указать параметр запроса для страницы DotNetNuke, который будет выбран функцией Request ().Нам нужны разные страницы для разных категорий.

Подробно У нас есть модуль, который появляется на каждой странице.Он всегда вызывает запрос («CategoryID»), чтобы увидеть, определена ли категория для страницы, и если это так, он фильтрует свой список результатов по этой категории.Обычно это используется, когда CategoryID указан в URL.Но в этом случае мы хотим указать это другим способом.Я мог бы, вероятно, указать объект скина как часть скина, который бы смотрел на URL и отображал соответствующий ID категории и записывал его как переменную сеанса, но я ищу более простой подход.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2011

Я закончил тем, что создал SkinObject, который обрабатывает это.В настоящее время я жестко закодировал сопоставление от TabID до CategoryID, а затем я делаю Response.Redirect на страницу с CategoryID, добавленным к URL.

Сначала я попытался записать CategoryID в ViewState на странице объектов Skin, но это не было обнаружено модулем.

Я все еще думаю, что есть лучший способ (я беспокоюсь о влиянии этого на 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
0 голосов
/ 27 апреля 2011

enter image description here

Это позволяет вам сохранять и получать 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
...